<!doctype html>
<html class="no-js" lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>
    
  NeilBlog
  
  </title>
  
  
  <link href="atom.xml" rel="alternate" title="NeilBlog" type="application/atom+xml">
    <link rel="stylesheet" href="asset/css/foundation.min.css" />
    <link rel="stylesheet" href="asset/css/docs.css" />
    <script src="asset/js/vendor/modernizr.js"></script>
    <script src="asset/js/vendor/jquery.js"></script>
  <script src="asset/highlightjs/highlight.pack.js"></script>
  <link href="asset/highlightjs/styles/github.css" media="screen, projection" rel="stylesheet" type="text/css">
  <script>hljs.initHighlightingOnLoad();</script>
<script type="text/javascript">
  function before_search(){
    var searchVal = 'site: ' + document.getElementById('search_input').value;
    document.getElementById('search_q').value = searchVal;
    return true;
  }
</script>
  </head>
  <body class="antialiased hide-extras">
    
    <div class="marketing off-canvas-wrap" data-offcanvas>
      <div class="inner-wrap">


<nav class="top-bar docs-bar hide-for-small" data-topbar>


  <section class="top-bar-section">
  <div class="row">
      <div style="position: relative;width:100%;"><div style="position: absolute; width:100%;">
        <ul id="main-menu" class="left">
        
        <li id=""><a target="self" href="index.html">Home</a></li>
        
        <li id=""><a target="_self" href="archives.html">Archives</a></li>
        
        </ul>

        <ul class="right" id="search-wrap">
          <li>
<form target="_blank" onsubmit="return before_search();" action="https://google.com/search" method="get">
    <input type="hidden" id="search_q" name="q" value="" />
    <input tabindex="1" type="search" id="search_input"  placeholder="Search"/>
</form>
</li>
          </ul>
      </div></div>
  </div>
  </section>

</nav>

        <nav class="tab-bar show-for-small">
  <a href="javascript:void(0)" class="left-off-canvas-toggle menu-icon">
    <span> &nbsp; NeilBlog</span>
  </a>
</nav>

<aside class="left-off-canvas-menu">
      <ul class="off-canvas-list">
        
        <li><a target="self" href="index.html">Home</a></li>
        
        <li><a target="_self" href="archives.html">Archives</a></li>
        

    <li><label>Categories</label></li>

        
            <li><a href="Python.html">Python</a></li>
        
            <li><a href="opentstack-neutron.html">opentstack-neutron</a></li>
        
            <li><a href="%E6%8A%80%E6%9C%AF%E5%91%A8%E8%BE%B9.html">技术周边</a></li>
        
            <li><a href="%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0.html">项目笔记</a></li>
         

      </ul>
    </aside>

<a class="exit-off-canvas" href="#"></a>


        <section id="main-content" role="main" class="scroll-container">
        
       

 <script type="text/javascript">
	$(function(){
		$('#menu_item_index').addClass('is_active');
	});
</script>
<div class="row">
	<div class="large-8 medium-8 columns">
		<div class="markdown-body home-categories">
		
			<div class="article">
                <a class="clearlink" href="15623333744762.html">
                
                  <h1>bytes/string转换</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<p>string -&gt; bytes: encode</p>

<pre><code class="language-text">    a = &#39;hello world&#39;
    print(type(a))
    print(a)

    b = a.encode(encoding=&#39;utf-8&#39;)
    print(type(b))
    print(b)
</code></pre>

<p>bytes -&gt; string: decode</p>

<pre><code class="language-text">    c = b.decode(encoding=&#39;utf-8&#39;)
    print(type(c))
    print(c)
</code></pre>

<p>gbk编码形式</p>

<pre><code class="language-text">    d = a.encode(encoding=&#39;utf-8&#39;)
    print(type(d))
    print(d)
    e = d.decode(encoding=&#39;utf-8&#39;)
    print(type(e))
    print(e)
</code></pre>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/7/5</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='Python.html'>Python</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15622929808447.html">
                
                  <h1>netconf client通信框架</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<h2 id="toc_0">需求</h2>

<ul>
<li>支持并发处理，即保证多线程同时调用netconf发送消息能够被处理</li>
<li>能够返回错误结果信息给调用者-&gt;需要解析响应的xml信息</li>
<li>支持netconf消息排队处理<br/>
## 设计</li>
<li>使用celery+redis框架实现任务调度</li>
<li>提供netconf client接口
<ul>
<li>初始化（启动celery worker线程；可以通过shell启动）
<ul>
<li>注册接口 uninc_init()；提供登录设备相关信息</li>
</ul></li>
<li>提供get、set接口
<ul>
<li>实现向设备下发uninc_set_config()</li>
<li>从设备获取配置uninc_get_config()</li>
</ul></li>
</ul></li>
</ul>

<p><img src="media/15622929808447/15623083336434.jpg" alt=""/></p>

<h2 id="toc_1">问题!</h2>

<p>celery创建一个task，使用shell启动task<br/>
celery实现一个app，使用shell启动app，两者有啥区别？</p>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/7/5</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0.html'>项目笔记</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15621228986145.html">
                
                  <h1>devstack 安装openstack</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<ul>
<li>
<a href="#toc_0">参考资料</a>
</li>
<li>
<a href="#toc_1">加速环境配置</a>
<ul>
<li>
<a href="#toc_2">更新Centos镜像源</a>
</li>
<li>
<a href="#toc_3">更新pip镜像源</a>
</li>
</ul>
</li>
<li>
<a href="#toc_4">添加Stack User</a>
<ul>
<li>
<a href="#toc_5">下载devstack</a>
</li>
</ul>
</li>
</ul>


<h2 id="toc_0">参考资料</h2>

<blockquote>
<p>官方安装文档：<br/>
<a href="https://docs.openstack.org/devstack/latest/#minimal-configuration">https://docs.openstack.org/devstack/latest/#minimal-configuration</a><br/>
<a href="http://yikun.github.io/2016/02/10/%E6%90%AD%E5%BB%BAOpenStack%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/">http://yikun.github.io/2016/02/10/搭建OpenStack开发环境/</a><br/>
pip镜像修改<br/>
<a href="https://www.jianshu.com/p/db33456d5d77">https://www.jianshu.com/p/db33456d5d77</a></p>
</blockquote>

<h2 id="toc_1">加速环境配置</h2>

<h3 id="toc_2">更新Centos镜像源</h3>

<p>备份<br/>
<code>[root@localhost liuyong]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup</code><br/>
下载阿里镜像源<br/>
<code>[root@localhost liuyong]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo</code><br/>
或者更新为163镜像源<br/>
<code>wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS5-Base-163.repo</code><br/>
运行yum makecache生成缓存<br/>
<code>[root@localhost liuyong]# yum makecache</code></p>

<h3 id="toc_3">更新pip镜像源</h3>

<pre><code class="language-text">pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
~  
</code></pre>

<h2 id="toc_4">添加Stack User</h2>

<p>添加用户<br/>
<code>$ sudo useradd -s /bin/bash -d /opt/stack -m stack</code><br/>
赋予root权限<br/>
<code>$ echo &quot;stack ALL=(ALL) NOPASSWD: ALL&quot; | sudo tee /etc/sudoers.d/stack</code><br/>
切换用户<br/>
<code>$ sudo su - stack</code></p>

<h3 id="toc_5">下载devstack</h3>

<p><code>git clone https://git.openstack.org/openstack-dev/devstack</code><br/>
创建 local.conf<br/>
在devstack根路径创建一个local.conf文件</p>

<pre><code class="language-text">[[local|localrc]]
HOST_IP=172.18.161.6
SERVICE_HOST=172.18.161.6
MYSQL_HOST=172.18.161.6
RABBIT_HOST=172.18.161.6
GLANCE_HOSTPORT=172.18.161.6:9292
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret

## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE=&quot;172.18.161.0/24&quot;
IPV4_ADDRS_SAFE_TO_USE=&quot;10.0.0.0/22&quot;
Q_FLOATING_ALLOCATION_POOL=start=172.18.161.250,end=172.18.161.254
PUBLIC_NETWORK_GATEWAY=&quot;172.18.161.1&quot;
PUBLIC_INTERFACE=eth0

# Open vSwitch provider networking configuration
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
</code></pre>

<p>开始安装<br/>
<code>$ ./stack.sh</code></p>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/7/3</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='opentstack-neutron.html'>opentstack-neutron</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15620552731750.html">
                
                  <h1>neutron agent 使用netconf向设备下发配置</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<p>本文将从why、what、how、where 几个方面介绍netconf</p>

<h2 id="toc_0">Why（为什么使用netconf下发配置？）</h2>

<ul>
<li>netconf本身就是为网络设备管理诞生的命令</li>
<li>厂商网络设备管理均使用netconf命令下发</li>
<li>netconf可以支持连续下发多条配置</li>
<li>netconf可以支持批量下发配置</li>
<li>netconf可以支持出错回滚功能</li>
<li>netconf可以支持事务操作（h3c不支持，但h3c支持配置保存以及配置回滚，可以先保存下发前配置，配置失败回滚到下发之前）</li>
<li>netconf支持事件订阅等</li>
</ul>

<hr/>

<ul>
<li>h3c支持通过netconf下发命令行，可以完全替代ssh下发命令。</li>
</ul>

<h2 id="toc_1">What（netconf是什么鬼，能干吗？）</h2>

<blockquote>
<p>NETCONF(Network Configuration Protocol，网络配置协议)是一种基于XML的网络管理协议， 他提供了一种可编程的、对网络设备进行配置和管理的方法。用户可以通过该协议设置属性、获取 属性值、获取统计信息等。这使得他在第三方软件的开发上非常便利，很容易开发出在混合不同厂 商、不同设备的环境下的特殊定制的网管软件。（h3c官方文档）</p>
</blockquote>

<h3 id="toc_2">netconf 协议详解</h3>

<blockquote>
<p>引用：<a href="https://blog.csdn.net/anzheangel/article/details/78885880">https://blog.csdn.net/anzheangel/article/details/78885880</a></p>

<h4 id="toc_3">概述</h4>

<p><img src="media/15620552731750/SouthEast.png" alt="SouthEast"/><br/>
NETCONF协议分为四层：由下至上分别是安全传输层，消息层，操作层和内容层<br/>
网络模型分为两类：状态数据、配置数据。</p>

<ul>
<li>状态数据一般指server（设备）的固有属性数据和当前运行的状态数据等，这类数据仅能查询。</li>
<li>配置数据则是指由用户（以某种方式）配置到server上的数据。配置数据本身又可以存在多个数据库。
<ul>
<li><running/>库用于保存当前已经生效的配置；（当前操作h3c设备只有running）</li>
<li><candidate/>用于保存可以提交为生效的数据；</li>
<li><startup/>用于保存启动时的配置数据。</li>
</ul></li>
</ul>
</blockquote>

<h4 id="toc_4">安全层</h4>

<p>NETCONF的第一大优势就是其从协议层面就已经规定其传输层必须使用带有安全加密的通信协议。<br/>
H3C支持的协议：</p>

<ul>
<li>非FIPS模式下:
<ul>
<li>NETCONF 支持 Telnet、SSH 和 Console 等 CLI 登录方式/协议，即 NETCONF over SSH、NETCONF over Telnet 和 NETCONF over Console</li>
<li>NETCONF 支持封装成 SOAP(Simple Object Access Protocol，简 单对象访问协议)报文后通过 HTTP 或 HTTPS 协议传输，即 NETCONF over SOAP over HTTP 和 NETCONF over SOAP over HTTPS</li>
</ul></li>
<li>FIPS模式下:
<ul>
<li>NETCONF 支持 SSH 和 Console 等 CLI 方式/协议，即 NETCONF<br/>
over SSH 和 NETCONF over Console</li>
<li>NETCONF 支持封装成 SOAP 报文后通过 HTTPS 协议传输，即</li>
<li>NETCONF over SOAP over HTTPS</li>
</ul></li>
</ul>

<h4 id="toc_5">消息层</h4>

<p>消息层分为三种类型：分别是hello， rpc和rpc-reply, notification</p>

<ul>
<li>hello消息
<ul>
<li><hello>仅用于会话刚刚建立时netconf-server和netconf-client之间进行能力交换。</li>
<li>server和client需要在会话建立后互相发送<hello>消息，并在<hello>消息中携带自身支持的能力，以及支持的netconf协议的版本号，server和client根据自身和对方的能力信息协商使用的netconf版本。</li>
<li>一般来说，C/S双方互发<hello>且协商版本成功后，认为netconf会话建立成功。</li>
<li>建立连接之后，server会分配给client一个session信息，client需要在后续报文中携带此session信息，相当于http中的session信息</li>
</ul></li>
</ul>

<p>(1) XPath Capability <br/>
　　该能力表示client可以在filter中使用XPath表达式作为过滤条件 ncclient是支持的<br/>
　　Capability Identifier: <br/>
　　urn:ietf:params:netconf:capability:xpath:1.0 <br/>
(2) Writable-Running Capability <strong>个人理解一定支持的能力</strong><br/>
　　该能力表示server支持直接对<running/>库进行修改操作。 <br/>
　　Capability Identifier: <br/>
　　urn:ietf:params:netconf:capability:writable-running:1.0 <br/>
(3) Candidate Configuration Capability <strong>此能力h3c并不支持</strong><br/>
　　该能力表示server具有一个candidate数据库，并且可以将candidate数据库中的配置提交生效并更新running数据库 <br/>
　　Capability Identifier: <br/>
　　urn:ietf:params:netconf:capability:candidate:1.0 <br/>
(４) Rollback-on-Error Capability <strong>h3c支持此能力，如果需要用到必须确保一起生效时可以使用此能力信息。</strong><br/>
　　<strong>该能力表示server在执行client发送的配置数据出错后可以进行回滚</strong> <br/>
　　Capability Identifier: <br/>
　　urn:ietf:params:netconf:capability:rollback-on-error:1.0 <br/>
(５) Validate Capability <br/>
　　该能力表示server可以校验client发送的配置数据是否正确 <br/>
　　Capability Identifier: <br/>
　　urn:ietf:params:netconf:capability:validate:1.1 <br/>
(６) Distinct startup Capability <strong>h3c不支持</strong><br/>
　　该能力表示server有一个startup数据库，用于保存启动配置 <br/>
　　Capability Identifier: <br/>
　　urn:ietf:params:netconf:capability:startup:1.0</p>

<ul>
<li>rpc、rpc-reply消息
<ul>
<li><rpc>是由netconf-client发起的发送到netconf-server的消息。用于client请求server执行某项具体的操作。</li>
<li><rpc>包含一个强制属性”message-id”，这个id是一个单调递增的正整数，同一会话内不能重复。该id用于<rpc>和<rpc-reply>的配对。</li>
<li><rpc-reply>是有netconf-server发送给netconf-client的rpc响应。不能主动发起，仅能在收到<rpc>之后回复，切必须携带与收到的rpc相同的message-id。 </li>
<li>在<rpc-reply>定义了两种默认的元素分别是<ok>和<rpc-error>。<ok>表示为定义响应内容的rpc执行成功，而<rpc-error>表示rpc执行失败。 
<em>目前ncclient提供manager api和rpc层接口，个人理解如果调用manager层不用关心rpc 中的message等信息，manager会自动填充，而rpc接口就要填充rpc/rpc-reply字段</em>
<code>
　　NETCONF&lt;rpc&gt;requests MUST be processed serially by the managed device. Additional&lt;rpc&gt;requests MAY be sent before previous ones have been completed. The managed device MUST send responses only in the order the requests were received.  <br/>
　　个人理解：<br/>
　　1. netconf-client必须保证server收到的rpc请求的顺序和message-id的顺序是一致的。 <br/>
　　2. netconf-server在能保证数据不冲突的前提下可以并行处理收到的rpc请求。 <br/>
　　3. netconf-server在发送&lt;rpc-reply&gt;时必须严格按照收到的&lt;rpc&gt;的顺序。
</code>
在netconf的1.0版本中还没有加入Notification相关的内容，而在1.1版本已经将RFC5277(NETCONF Event Notifications)囊落在内了。支持Notification上报的netconf-server需在能力交换时上报能力： <br/>
　　“urn:ietf:params:netconf:capability:notification:1.0” <br/>
几个关键的知识点： <br/>
　　1. Netconf的通知采用的是订阅发布机制，server仅会向发送过订阅请求的client发送通知。<br/>
　　2. Netconf的通知是以Stream进行分类的，不同类的Stream以不同的stream-name进行区分。netconf-server默认需要支持的stream-name是”NETCONF”。 <br/>
　　3. client不能重复下发订阅，即同一Stream的订阅不能重复下发，也不能同时订阅多个Stream，订阅可以设置定时取消，如果没有设置终止时间，取消订阅需要使用close-session或者kill-session。定时取消的订阅netconf的会话还是激活的，而使用close-session或者kill-session来取消的话，netconf会话会关闭。 </li>
</ul></li>
</ul>

<h4 id="toc_6">操作层</h4>

<p>操作层仅承载在仅<rpc>和<rpc-reply>消息上，<hello>和<notification>消息无操作层。NETCONF协议规定了9种简单的rpc操作，同时也支持用户自定义rpc操作。</p>

<ul>
<li><get>用于查询状态数据，另外如果server支持能力:urn:ietf:params:netconf:capability:xpath:1.0则还可以使用filter进行条件查询
举例：</li>
</ul>

<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;
    xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;
    &lt;get&gt;
        &lt;filter type=&quot;subtree&quot;&gt;
            &lt;top
                xmlns=&quot;http://example.com/schema/1.2/stats&quot;&gt;
                &lt;interfaces&gt;
                    &lt;interface&gt;
                        &lt;ifName&gt;eth0&lt;/ifName&gt;
                    &lt;/interface&gt;
                &lt;/interfaces&gt;
            &lt;/top&gt;
        &lt;/filter&gt;
    &lt;/get&gt;
&lt;/rpc&gt;
&lt;rpc-reply message-id=&quot;101&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;
    &lt;data&gt;
        &lt;top xmlns=&quot;http://example.com/schema/1.2/stats&quot;&gt;
            &lt;interfaces&gt;
                &lt;interface&gt;
                    &lt;ifName&gt;eth0&lt;/ifName&gt;
                    &lt;ifInOctets&gt;45621&lt;/ifInOctets&gt;
                    &lt;ifOutOctets&gt;774344&lt;/ifOutOctets&gt;
                &lt;/interface&gt;
            &lt;/interfaces&gt;
        &lt;/top&gt;
    &lt;/data&gt;
&lt;/rpc-reply&gt;
</code></pre>

<ul>
<li><get-config>
<p>　　用于查询配置数据，可以通过 <source/>来指定不同的配置库，例如：</p>
<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;
&lt;get-config&gt;<br/>
    &lt;source&gt;<br/>
        &lt;running/&gt;<br/>
    &lt;/source&gt;<br/>
    &lt;filter type=&quot;subtree&quot;&gt;<br/>
        &lt;top xmlns=&quot;http://example.com/schema/1.2/config&quot;&gt;<br/>
            &lt;users/&gt;<br/>
        &lt;/top&gt;<br/>
    &lt;/filter&gt;<br/>
&lt;/get-config&gt;<br/>
&lt;/rpc&gt;<br/>
&lt;rpc-reply message-id=&quot;101&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;data&gt;<br/>
    &lt;top xmlns=&quot;http://example.com/schema/1.2/config&quot;&gt;<br/>
        &lt;users&gt;<br/>
            &lt;user&gt;<br/>
                &lt;name&gt;root&lt;/name&gt;<br/>
                &lt;type&gt;superuser&lt;/type&gt;<br/>
                &lt;full-name&gt;Charlie Root&lt;/full-name&gt;<br/>
                &lt;company-info&gt;<br/>
                    &lt;dept&gt;1&lt;/dept&gt;<br/>
                    &lt;id&gt;1&lt;/id&gt;<br/>
                &lt;/company-info&gt;<br/>
            &lt;/user&gt;<br/>
            &lt;!-- additional &lt;user&gt; elements appear here... --&gt;<br/>
        &lt;/users&gt;<br/>
    &lt;/top&gt;<br/>
&lt;/data&gt;<br/>
&lt;/rpc-reply&gt;
</code></pre></li>
<li><edit-config>
<p>　　用于对指定配置数据库的内容进行修改，支持以下几种操作： <br/>
　　merge: 合并操作，此操作为默认操作。 <br/>
　　replace: 替换操作，如果对象已经存在则替换，不存在则创建。 <br/>
　　create: 创建操作，如果对象已经存在，则报错误“data-exists”。 <br/>
　　delete: 删除操作，如果对象存在则删除，不存在则报错 “data-missing”。 <br/>
　　remove: 删除操作，如果对象存在则删除，不存在则忽略。 <br/>
举例：</p>
<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;
xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;edit-config&gt;<br/>
    &lt;target&gt;<br/>
        &lt;running/&gt;<br/>
    &lt;/target&gt;<br/>
    &lt;config<br/>
        xmlns:xc=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
        &lt;top<br/>
            xmlns=&quot;http://example.com/schema/1.2/config&quot;&gt;<br/>
            &lt;interface xc:operation=&quot;replace&quot;&gt;<br/>
                &lt;name&gt;Ethernet0/0&lt;/name&gt;<br/>
                &lt;mtu&gt;1500&lt;/mtu&gt;<br/>
                &lt;address&gt;<br/>
                    &lt;name&gt;192.0.2.4&lt;/name&gt;<br/>
                    &lt;prefix-length&gt;24&lt;/prefix-length&gt;<br/>
                &lt;/address&gt;<br/>
            &lt;/interface&gt;<br/>
        &lt;/top&gt;<br/>
    &lt;/config&gt;<br/>
&lt;/edit-config&gt;<br/>
&lt;/rpc&gt;<br/>
&lt;rpc message-id=&quot;101&quot;<br/>
xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;edit-config&gt;<br/>
    &lt;target&gt;<br/>
        &lt;running/&gt;<br/>
    &lt;/target&gt;<br/>
    &lt;default-operation&gt;none&lt;/default-operation&gt;<br/>
    &lt;config<br/>
        xmlns:xc=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
        &lt;top<br/>
            xmlns=&quot;http://example.com/schema/1.2/config&quot;&gt;<br/>
            &lt;protocols&gt;<br/>
                &lt;ospf&gt;<br/>
                    &lt;area&gt;<br/>
                        &lt;name&gt;0.0.0.0&lt;/name&gt;<br/>
                        &lt;interfaces&gt;<br/>
                            &lt;interface xc:operation=&quot;delete&quot;&gt;<br/>
                                &lt;name&gt;192.0.2.4&lt;/name&gt;<br/>
                            &lt;/interface&gt;<br/>
                        &lt;/interfaces&gt;<br/>
                    &lt;/area&gt;<br/>
                &lt;/ospf&gt;<br/>
            &lt;/protocols&gt;<br/>
        &lt;/top&gt;<br/>
    &lt;/config&gt;<br/>
&lt;/edit-config&gt;<br/>
&lt;/rpc&gt;
</code></pre></li>
<li><copy-config>
<p>　　将一个库的数据复制到另一个库。 <br/>
　　举例：</p>
<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;
xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;copy-config&gt;<br/>
    &lt;target&gt;<br/>
        &lt;running/&gt;<br/>
    &lt;/target&gt;<br/>
    &lt;source&gt;<br/>
        &lt;url&gt;https://user:password@example.com/cfg/new.txt&lt;/url&gt;<br/>
    &lt;/source&gt;<br/>
&lt;/copy-config&gt;<br/>
&lt;/rpc&gt;
</code></pre></li>
<li><delete-config>
<p>　　删除一个数据库。但是<running/>库不能被删除。</p>
<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;
xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;delete-config&gt;<br/>
    &lt;target&gt;<br/>
        &lt;startup/&gt;<br/>
    &lt;/target&gt;<br/>
&lt;/delete-config&gt;<br/>
&lt;/rpc&gt;
</code></pre></li>
<li><lock>
<p>　　获取指定数据库的锁，当某个client获得了指定数据库的锁之后，在其没有释放该锁之前，其余client均不能获得该数据库的锁，也不能对其进行修改操作。同一client也不能在没有释放锁之前，重复申请锁。 <br/>
获取锁的主要目的就是避免并发导致数据冲突。 <br/>
<strong>在执行h3c的配置回滚操作时需要先执行lock操作，参见<a href="http://www.h3c.com/cn/d_201712/1054892_30005_0.htm#_Ref319171075">http://www.h3c.com/cn/d_201712/1054892_30005_0.htm#_Ref319171075</a></strong>1.10.3章节<br/>
　　举例：</p>
<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;
xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;lock&gt;<br/>
    &lt;target&gt;<br/>
        &lt;running/&gt;<br/>
    &lt;/target&gt;<br/>
&lt;/lock&gt;<br/>
&lt;/rpc&gt;
</code></pre></li>
<li><unlock>
<p>　　释放指定数据库的锁。client只能释放自己持有的锁，不能释放其它client的锁。 <br/>
　　举例：</p>
<pre><code class="language-text">&lt;rpc message-id=&quot;101&quot;
xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;<br/>
&lt;unlock&gt;<br/>
    &lt;target&gt;<br/>
        &lt;running/&gt;<br/>
    &lt;/target&gt;<br/>
&lt;/unlock&gt;<br/>
&lt;/rpc&gt;
</code></pre></li>
<li><close-session>
<p>　　优雅关闭netconf会话，netconf-server将释放该client持有的锁和为其分配的资源，并优雅的关闭与该client链接。所有在<close-session>之后收到的操作均会被忽略。</p></li>
<li><kill-session>
<p>　　强制关闭netconf会话。</p></li>
</ul>

<h4 id="toc_7">内容层</h4>

<p>内容层其实就是我们要向设备发送配置信息，以xml形式体现，但是可以通过yang模型进行建模。<br/>
内容层未指定具体的模型结构，而是指定了一套建模语言–yang。也就是说使用yang定义的数据模型，均可以作为netconf的内容层。所以扩展对netconf来说就是不断的增加和修改yang文件而已</p>

<h2 id="toc_8">how：（如何使用netconf命令）</h2>

<p>python拥有超强大的代码库，使用ncclient下发netconf命令。</p>

<h3 id="toc_9">python ncclient库介绍</h3>

<h4 id="toc_10">Manager API介绍</h4>

<p><em>ManagerAPI是作为ncclient底层RPC交互能力的一个抽象，基本满足了我们配置下发查询的基本需求</em></p>

<p>翻译官方API文档：（英文水平有限，尽量还是阅读英文原文）</p>

<ul>
<li><p>获取能力信息</p></li>
<li><p>get</p></li>
<li><p>get-bluk</p></li>
<li><p>edit-config</p></li>
<li></li>
</ul>

<pre><code class="language-失败返回结果">&lt;env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot;&gt;
   &lt;env:Body&gt;
      &lt;env:Fault&gt;
         &lt;env:Code&gt;
            &lt;env:Value&gt;env:Sender&lt;/env:Value&gt;
         &lt;/env:Code&gt;
         &lt;env:Reason&gt;
            &lt;env:Text xml:lang=&quot;en&quot;&gt;Invalid session&lt;/env:Text&gt;
         &lt;/env:Reason&gt;
      &lt;/env:Fault&gt;
   &lt;/env:Body&gt;
&lt;/env:Envelope&gt;
</code></pre>

<pre><code class="language-成功返回信息">&lt;env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot;&gt;
   &lt;env:Header&gt;
      &lt;auth:Authentication env:mustUnderstand=&quot;true&quot; xmlns:auth=&quot;http://www.h3c.com/netconf/base:1.0&quot;&gt;
         &lt;auth:AuthInfo&gt;100001a27b7389ba8e2b68299bfbfef30487&lt;/auth:AuthInfo&gt;
      &lt;/auth:Authentication&gt;
   &lt;/env:Header&gt;
   &lt;env:Body&gt;
      &lt;rpc-reply message-id=&quot;252&quot; xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;
         &lt;ok/&gt;
      &lt;/rpc-reply&gt;
   &lt;/env:Body&gt;
&lt;/env:Envelope&gt;
</code></pre>

<pre><code class="language-text">&lt;env:Envelope xmlns:env=&quot;http://www.w3.org/2003/05/soap-envelope&quot;&gt;
   &lt;env:Header&gt;
      &lt;auth:Authentication env:mustUnderstand=&quot;true&quot; xmlns:auth=&quot;http://www.h3c.com/netconf/base:1.0&quot;&gt;
         &lt;auth:AuthInfo&gt;100001a27b7389ba8e2b68299bfbfef30487&lt;/auth:AuthInfo&gt;
      &lt;/auth:Authentication&gt;
   &lt;/env:Header&gt;
   &lt;env:Body&gt;
      &lt;env:Fault&gt;
         &lt;env:Code&gt;
            &lt;env:Value&gt;env:Receiver&lt;/env:Value&gt;
         &lt;/env:Code&gt;
         &lt;env:Reason&gt;
            &lt;env:Text xml:lang=&quot;en&quot;&gt;bad-attribute&lt;/env:Text&gt;
         &lt;/env:Reason&gt;
         &lt;env:Detail&gt;
            &lt;rpc-error xmlns=&quot;urn:ietf:params:xml:ns:netconf:base:1.0&quot;&gt;
               &lt;error-type&gt;rpc&lt;/error-type&gt;
               &lt;error-tag&gt;bad-attribute&lt;/error-tag&gt;
               &lt;error-severity&gt;error&lt;/error-severity&gt;
               &lt;error-message xml:lang=&quot;en&quot;&gt;The value of attribute &#39;urn:ietf:params:xml:ns:netconf:base:1.0&#39;:&#39;operation&#39; for element &#39;/Envelope/Body[1]/rpc[1]/edit-config[1]/config[1]/top[1]/ACL[1]&#39; is invalid. The value does not match the enumeration.&lt;/error-message&gt;
               &lt;error-info&gt;
                  &lt;bad-element&gt;ACL&lt;/bad-element&gt;
                  &lt;bad-attribute&gt;operation&lt;/bad-attribute&gt;
               &lt;/error-info&gt;
            &lt;/rpc-error&gt;
         &lt;/env:Detail&gt;
      &lt;/env:Fault&gt;
   &lt;/env:Body&gt;
&lt;/env:Envelope&gt;
</code></pre>

<h2 id="toc_11">where：（netconf命令在哪儿使用嘞？）</h2>

<p>neutron作为openstack的网络组建，由于各家云厂商实现不同，有些配置需要下发到设备上，此时netconf就变得炙手可热啦！<br/>
所以，netconf用于neutron操作设备的agent使用。</p>

<h2 id="toc_12">参考资料</h2>

<blockquote>
<p>netconf详解：<br/>
<a href="https://blog.csdn.net/anzheangel/article/details/78885880">https://blog.csdn.net/anzheangel/article/details/78885880</a><br/>
h3c_netconf配置：<br/>
<a href="http://www.h3c.com/cn/d_201906/1208544_30005_0.htm#_Ref336504934">http://www.h3c.com/cn/d_201906/1208544_30005_0.htm#_Ref336504934</a><br/>
xml命名空间解释：<br/>
<a href="http://www.w3school.com.cn/xml/xml_namespaces.asp">http://www.w3school.com.cn/xml/xml_namespaces.asp</a><br/>
<a href="https://blog.csdn.net/mylifeyouwill/article/details/81487348">https://blog.csdn.net/mylifeyouwill/article/details/81487348</a><br/>
ncclient工具API文档：<br/>
<a href="https://ncclient.readthedocs.io/en/latest/manager.html">https://ncclient.readthedocs.io/en/latest/manager.html</a><br/>
ncclient github路径：<br/>
<a href="https://github.com/ncclient/ncclient">https://github.com/ncclient/ncclient</a><br/>
python xml解析库参考：<br/>
<a href="https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element">https://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element</a></p>
</blockquote>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/7/2</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0.html'>项目笔记</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15620392963346.html">
                
                  <h1>loggging模块</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<h2 id="toc_0">记录日志</h2>

<p>配置日志级别为debug，通过logging.debug输出debug日志。指定日志文件名称</p>

<pre><code class="language-text">import logging

LOG_FILE = &#39;logging.out&#39;
logging.basicConfig(
    filename=LOG_FILE,
    level=logging.DEBUG
)

logging.debug(&#39;This message should go to the log file&#39;)
</code></pre>

<p>日志输出内容：<br/>
DEBUG:root:This message should go to the log file<br/>
root：表示根日志处理器名称。</p>

<h2 id="toc_1">旋转日志文件</h2>

<ul>
<li>超过指定大小新生成文件</li>
<li>超过指定文件个数覆盖原有历史文件</li>
</ul>

<pre><code class="language-text">import logging
import logging.handlers
handler = logging.handlers.RotatingFileHandler(
    LOG_FILE,
    maxBytes=20,  # 文件大小，超过则生成备份文件
    backupCount=5  # 备份文件个数,即一共6个文件同时存在
)

logger.addHandler(handler)

for i in range(20):
    logger.debug(&#39;i = %d&#39; %i)
</code></pre>

<p>如下图所示：<br/>
<img src="media/15620392963346/15620448258425.jpg" alt=""/></p>

<h2 id="toc_2">设置日志级别，设置输出级别</h2>

<p>level:可以指定输出的日志级别，只有比指定的日记级别高的日志才会被输出。<br/>
可以理解为有些小毛病，我们不必关心，只有达到某种严重程度才看一下。</p>

<pre><code class="language-text">import logging

LOG_FILE = &#39;logging.out&#39;
logging.basicConfig(
    filename=LOG_FILE,
    level=logging.INFO
)

logging.debug(&#39;This message should go to the log file&#39;)
logging.debug(&#39;This is a debug message&#39;)
logging.info(&#39;This is an info message&#39;)
logging.warning(&#39;This is a warning message&#39;)
logging.error(&#39;This is an error message&#39;)
logging.critical(&#39;This is a critical message&#39;)
</code></pre>

<p>打印信息如下：<br/>
<img src="media/15620392963346/15620459845907.jpg" alt=""/></p>

<h2 id="toc_3">设置日志模块名</h2>

<p>开发过程中当然希望的是自己模块的代码能够显示自己的模块名称，而不是显示root。那如何指定呢？<br/>
可以通过logging.getLogger(&#39;module1&#39;)指定。</p>

<pre><code class="language-text">import logging
import logging.handlers

LOG_FILE = &#39;logging.out&#39;
logging.basicConfig(
    filename=LOG_FILE,
    level=logging.DEBUG
)

logging.debug(&#39;This message should go to the log file&#39;)

logger = logging.getLogger(&#39;module1&#39;)

logger.debug(&#39;This message should go to the log file&#39;)
</code></pre>

<p>打印信息如下：<br/>
DEBUG:root:This message should go to the log file<br/>
DEBUG:module1:This message should go to the log file</p>

<p>思考：该如何利用日志logging功能</p>

<ol>
<li>如何保证每个模块日志不同</li>
<li>如何配置不同模块都输出到统一的日志文件中</li>
<li>可以每个模块配置的日志级别不同吗？（貌似没有这个需求）</li>
</ol>

<p>有什么需要直接看官方指导样例吧！</p>

<blockquote>
<p><a href="https://docs.python.org/3.7/howto/logging-cookbook.html">https://docs.python.org/3.7/howto/logging-cookbook.html</a></p>
</blockquote>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/7/2</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='Python.html'>Python</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15617121531390.html">
                
                  <h1></h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<h1 id="toc_0">有趣的terminal命令</h1>

<ul>
<li>
<a href="#toc_0">有趣的terminal命令</a>
<ul>
<li>
<a href="#toc_1">MAC terminal下显示目录树</a>
</li>
<li>
<a href="#toc_2">zip解压命令</a>
</li>
</ul>
</li>
</ul>


<h2 id="toc_1">MAC terminal下显示目录树</h2>

<p>安装tree命令 brew install tree</p>

<pre><code class="language-text">bogon:eggtest ulysses$ brew install tree
==&gt; Downloading https://homebrew.bintray.com/bottles/tree-1.8.0.high_sierra.bottle.tar.gz
######################################################################## 100.0%
==&gt; Pouring tree-1.8.0.high_sierra.bottle.tar.gz
🍺  /usr/local/Cellar/tree/1.8.0: 8 files, 117KB
</code></pre>

<p>tree -L 1 显示当前目录下的1级目录</p>

<pre><code class="language-text">bogon:eggtest ulysses$ tree -L 1
.
├── __init__.py
├── build
├── create_egg.egg-info
├── create_egg.py
├── dist
└── setup.py

3 directories, 3 files
</code></pre>

<p>tree -a 显示当前目录所有的目录结构</p>

<pre><code class="language-text">bogon:eggtest ulysses$ tree -a
.
├── __init__.py
├── build
│   └── bdist.macosx-10.13-intel
├── create_egg.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   └── top_level.txt
├── create_egg.py
├── dist
│   └── create_egg-0.1-py2.7.egg
└── setup.py

4 directories, 8 files
</code></pre>

<p>tree -I &quot;dist&quot; 不显示dist目录</p>

<pre><code class="language-text">bogon:eggtest ulysses$ tree -I dist
.
├── __init__.py
├── build
│   └── bdist.macosx-10.13-intel
├── create_egg.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   └── top_level.txt
├── create_egg.py
└── setup.py

3 directories, 7 files
</code></pre>

<h2 id="toc_2">zip解压命令</h2>

<p>安装zip</p>

<pre><code class="language-text">bogon:eggtest ulysses$ brew install zip
==&gt; Downloading https://homebrew.bintray.com/bottles/zip-3.0.high_sierra.bottle.1.tar.gz
==&gt; Downloading from https://akamai.bintray.com/d2/d218e0b7d82c7864a1ead12186b5bc09b43c2aa3749651008ac8dbcf32ec0d7c?__gda__=exp=1561714708~hmac=a7e35f8381e63d1f8a6805d4ab1b89cf50b556929ec4f3ad9bcfad82b30c7f77&amp;response-content-dispos
######################################################################## 100.0%
==&gt; Pouring zip-3.0.high_sierra.bottle.1.tar.gz
==&gt; Caveats
zip is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have zip first in your PATH run:
  echo &#39;export PATH=&quot;/usr/local/opt/zip/bin:$PATH&quot;&#39; &gt;&gt; ~/.bash_profile

==&gt; Summary
🍺  /usr/local/Cellar/zip/3.0: 14 files, 755.8KB
</code></pre>

<p>用unzip -l命令显示包的内容</p>

<pre><code class="language-text">bogon:eggtest ulysses$ unzip -l dist/create_egg-0.1-py2.7.egg 
Archive:  dist/create_egg-0.1-py2.7.egg
  Length      Date    Time    Name
---------  ---------- -----   ----
      182  06-28-2019 16:50   EGG-INFO/PKG-INFO
        1  06-28-2019 16:50   EGG-INFO/zip-safe
      144  06-28-2019 16:50   EGG-INFO/SOURCES.txt
        1  06-28-2019 16:50   EGG-INFO/top_level.txt
        1  06-28-2019 16:50   EGG-INFO/dependency_links.txt
---------                     -------
      329                     5 files
bogon:eggtest ulysses$ 
</code></pre>

<p>命令详解:<br/>
<a href="https://blog.csdn.net/yxys01/article/details/73848720">https://blog.csdn.net/yxys01/article/details/73848720</a></p>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/6/28</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='%E6%8A%80%E6%9C%AF%E5%91%A8%E8%BE%B9.html'>技术周边</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15617044001877.html">
                
                  <h1>neutron 调试方法</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<ol>
<li>进入neutron-server 服务
<code>
[root@cloudos156 ~]# source /opt/bin/common/tool.sh<br/>
[root@cloudos156 ~]# pod | grep neutron<br/>
default       neutronagentrc-5jgzj           1/1       Running   0          1d        10.101.10.61   10.0.46.156<br/>
default       neutronserverrc-n0mzf          1/1       Running   0          1d        10.101.10.62   10.0.46.156<br/>
[root@cloudos156 ~]# kubectl exec -it neutronserverrc-n0mzf bash<br/>
[root@neutron-service /]# 
</code></li>
<li><p>查看neutorn server运行状态</p>
<pre><code class="language-text">[root@neutron-service /]# ps aux | grep neutron
neutron   5989  0.0  0.0 370852 131228 ?       Ss   Jun27   1:18 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6024  0.0  0.1 394896 149940 ?       S    Jun27   0:24 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6025  0.0  0.1 395884 150696 ?       S    Jun27   0:34 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6026  0.0  0.1 398028 152956 ?       S    Jun27   0:32 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6027  0.0  0.1 397044 151716 ?       S    Jun27   0:40 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6028  0.0  0.1 398036 152968 ?       S    Jun27   0:44 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6029  0.0  0.1 401144 155276 ?       S    Jun27   0:40 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6030  0.0  0.1 398200 152948 ?       S    Jun27   0:38 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6031  0.0  0.1 397604 151932 ?       S    Jun27   0:27 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6032  0.0  0.1 397656 152708 ?       S    Jun27   0:46 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6033  0.0  0.1 397920 152848 ?       S    Jun27   0:34 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6034  0.0  0.1 394140 149184 ?       S    Jun27   0:26 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6035  0.0  0.1 397248 151564 ?       S    Jun27   0:50 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6036  0.0  0.1 397260 151956 ?       S    Jun27   0:29 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6037  0.0  0.1 397396 152448 ?       S    Jun27   0:52 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6038  0.5  0.1 400404 155236 ?       S    Jun27   7:54 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6039  0.0  0.1 397996 152808 ?       S    Jun27   0:40 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6040  0.7  0.1 388996 143804 ?       S    Jun27  10:33 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6041  0.0  0.0 370592 124628 ?       S    Jun27   0:11 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6042  0.0  0.1 382828 137324 ?       S    Jun27   0:28 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
root      9398  0.0  0.0  51064  4872 ?        S+   Jun27   0:00 vim /etc/neutron/plugins/ml2/ml2_conf_h3c.ini<br/>
root     21177  0.0  0.0  12512   988 ?        S+   14:55   0:00 grep --color=auto neutron<br/>
[root@neutron-service /]# ps aux | grep neutronps aux| grep neutron<br/>
grep: aux: No such file or directory<br/>
[root@neutron-service /]# ps aux| grep neutron<br/>
neutron   5989  0.0  0.0 370852 131228 ?       Ss   Jun27   1:18 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6024  0.0  0.1 394896 149940 ?       S    Jun27   0:24 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6025  0.0  0.1 395884 150696 ?       S    Jun27   0:34 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6026  0.0  0.1 398028 152956 ?       S    Jun27   0:32 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6027  0.0  0.1 397044 151716 ?       S    Jun27   0:40 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6028  0.0  0.1 398036 152968 ?       S    Jun27   0:44 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6029  0.0  0.1 401144 155276 ?       S    Jun27   0:40 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6030  0.0  0.1 398200 152948 ?       S    Jun27   0:38 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6031  0.0  0.1 397604 151932 ?       S    Jun27   0:27 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6032  0.0  0.1 397656 152708 ?       S    Jun27   0:46 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6033  0.0  0.1 397920 152848 ?       S    Jun27   0:34 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6034  0.0  0.1 394140 149184 ?       S    Jun27   0:26 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6035  0.0  0.1 397248 151564 ?       S    Jun27   0:50 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6036  0.0  0.1 397260 151956 ?       S    Jun27   0:29 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6037  0.0  0.1 397396 152448 ?       S    Jun27   0:52 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6038  0.5  0.1 400404 155236 ?       S    Jun27   7:54 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6039  0.0  0.1 397996 152808 ?       S    Jun27   0:40 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6040  0.7  0.1 388996 143804 ?       S    Jun27  10:33 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6041  0.0  0.0 370592 124628 ?       S    Jun27   0:11 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
neutron   6042  0.0  0.1 382828 137324 ?       S    Jun27   0:28 /usr/bin/python2 /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log<br/>
root      9398  0.0  0.0  51064  4872 ?        S+   Jun27   0:00 vim /etc/neutron/plugins/ml2/ml2_conf_h3c.ini<br/>
root     21413  0.0  0.0  12512   988 ?        S+   14:55   0:00 grep --color=auto neutron
</code></pre></li>
<li><p>修改neutron 配置文件neutron.conf，修改一个其他的端口，否则neutron 脚本起不来</p>
<pre><code class="language-text">[root@neutron-service /]# vi /etc/neutron/neutron.conf  
修改前================================<br/>
...<br/>
# The port to bind to (port value)<br/>
# Minimum value: 0<br/>
# Maximum value: 65535<br/>
#bind_port = 9696<br/>
...<br/>
  修改后================================<br/>
...<br/>
# The port to bind to (port value)<br/>
# Minimum value: 0<br/>
# Maximum value: 65535<br/>
bind_port = 9670<br/>
...
</code></pre></li>
<li><p>复制neutron server脚本并重命名</p>
<pre><code class="language-text">[root@neutron-service /]# cp /usr/bin/neutron-server /usr/bin/neutron-server-dbg
</code></pre></li>
<li><p>在需要调试的地方加入pdb 调试信息</p>
<pre><code class="language-text">import pdb
pdb.settrace()<br/>
===================================<br/>
[root@neutron-service /]# vim /usr/bin/neutron-server-dbg <br/>
修改后==============================<br/>
#!/usr/bin/python2<br/>
# PBR Generated from u&#39;console_scripts&#39;<br/>
import sys<br/>
import pdb<br/>
from neutron.cmd.eventlet.server import main<br/>
if __name__ == &quot;__main__&quot;:<br/>
pdb.set_trace()<br/>
sys.exit(main())             
</code></pre></li>
<li><p>复制neutron启动流程，执行启动neutorn命令,进入调试位置</p>
<pre><code class="language-text">[root@neutron-service /]#  /usr/bin/python2 /usr/bin/neutron-server-dbg --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-dir /etc/neutron/conf.d/neutron-server --config-file /etc/neutron/plugins/ml2/ml2_conf_sriov.ini --log-file /var/log/neutron/server.log
</code></pre></li>
</ol>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/6/28</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='opentstack-neutron.html'>opentstack-neutron</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15617035057571.html">
                
                  <h1>如何生成一个egg包以及如果加载egg包</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<ul>
<li>
<a href="#toc_0">制作egg包</a>
<ul>
<li>
<a href="#toc_1">setuptools 工具安装包</a>
</li>
</ul>
</li>
<li>
<a href="#toc_2">代码加载egg包</a>
</li>
</ul>


<blockquote>
<p>参考资料<br/>
<a href="https://www.jianshu.com/p/ea9973091fdf">https://www.jianshu.com/p/ea9973091fdf</a></p>
</blockquote>

<h2 id="toc_0">制作egg包</h2>

<ol>
<li><p>创建包目录结构，eggtest是安装后的包名称。</p>
<pre><code class="language-text">bogon:eggpackage ulysses$ tree -a
.<br/>
├── eggtest #安装后对应的包名<br/>
│   ├── __init__.py<br/>
│   └── create_egg.py<br/>
└── setup.py<br/>
2 directories, 5 files
</code></pre></li>
<li><p>编写setup.py文件</p>
<pre><code class="language-text">from setuptools import setup, find_packages
setup(<br/>
    name=&quot;create_egg&quot;, # egg包名称，不是调用时的包名称<br/>
    version=&quot;0.1&quot;,<br/>
    packages=find_packages(), #通过find_packages在当前路径下自动查找包<br/>
)
</code></pre></li>
<li><p>执行python3 setup.py bdist_egg 显示生成后目录结构</p>
<pre><code class="language-text">bogon:eggpackage ulysses$ tree -a
.<br/>
├── build<br/>
│   ├── bdist.macosx-10.9-x86_64<br/>
│   └── lib<br/>
│       └── eggtest<br/>
│           ├── __init__.py<br/>
│           └── create_egg.py<br/>
├── create_egg.egg-info<br/>
│   ├── PKG-INFO<br/>
│   ├── SOURCES.txt<br/>
│   ├── dependency_links.txt<br/>
│   └── top_level.txt<br/>
├── dist<br/>
│   └── create_egg-0.1-py3.7.egg<br/>
├── eggtest<br/>
│   ├── __init__.py<br/>
│   └── create_egg.py<br/>
└── setup.py<br/>
8 directories, 12 files
</code></pre></li>
<li><p>通过解压命令显示包内容</p></li>
</ol>

<pre><code class="language-text">bogon:eggpackage ulysses$ unzip -l dist/create_egg-0.1-py3.7.egg
Archive:  dist/create_egg-0.1-py3.7.egg
  Length      Date    Time    Name
---------  ---------- -----   ----
      182  06-28-2019 19:42   EGG-INFO/PKG-INFO
      186  06-28-2019 19:42   EGG-INFO/SOURCES.txt
        1  06-28-2019 19:42   EGG-INFO/dependency_links.txt
        8  06-28-2019 19:42   EGG-INFO/top_level.txt
        1  06-28-2019 19:42   EGG-INFO/zip-safe
      160  06-28-2019 14:37   eggtest/__init__.py
      111  06-28-2019 17:37   eggtest/create_egg.py
---------                     -------
     1260                     9 files
</code></pre>

<ol>
<li><p>通过python3 setup.py install 安装egg包</p>
<pre><code class="language-text">安装后路径：
 /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/create_egg-0.1-py3.7.egg
</code></pre></li>
<li><p>测试包安装结果</p>
<pre><code class="language-text">bogon:eggpackage ulysses$ python3
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21) <br/>
[Clang 6.0 (clang-600.0.57)] on darwin<br/>
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.<br/>
&gt;&gt;&gt; import eggtest<br/>
&gt;&gt;&gt; eggtest.creat_egg()<br/>
hello world<br/>
&gt;&gt;&gt; 
</code></pre></li>
</ol>

<h3 id="toc_1">setuptools 工具安装包</h3>

<h2 id="toc_2">代码加载egg包</h2>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/6/28</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='Python.html'>Python</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15616868047861.html">
                
                  <h1>```</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<p>[root@neutron-service /]# grep -R &quot;h3c&quot; /usr<br/><br/>
/usr/bin/h3c-agent:# EASY-INSTALL-ENTRY-SCRIPT: &#39;VCF-CONTROLLER-PLUGIN=<mark>E2507-pike-2019.06&#39;,&#39;console_scripts&#39;,&#39;h3c-agent&#39;<br/>
/usr/bin/h3c-agent:        load_entry_point(&#39;VCF-CONTROLLER-PLUGIN</mark>=E2507-pike-2019.06&#39;, &#39;console_scripts&#39;, &#39;h3c-agent&#39;)()<br/>
/usr/bin/h3c-vcfplugin:# EASY-INSTALL-ENTRY-SCRIPT: &#39;VCF-CONTROLLER-PLUGIN=<mark>E2507-pike-2019.06&#39;,&#39;console_scripts&#39;,&#39;h3c-vcfplugin&#39;<br/>
/usr/bin/h3c-vcfplugin:        load_entry_point(&#39;VCF-CONTROLLER-PLUGIN</mark>=E2507-pike-2019.06&#39;, &#39;console_scripts&#39;, &#39;h3c-vcfplugin&#39;)()<br/>
grep: /usr/lib/debug/usr/.dwz: No such file or directory<br/>
/usr/lib/python2.7/site-packages/ncclient/xml_.py:H3C_1_0 = &quot;<a href="http://www.h3c.com/netconf/config:1.0">http://www.h3c.com/netconf/config:1.0</a>&quot;<br/>
Binary file /usr/lib/python2.7/site-packages/ncclient/xml_.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/ncclient/xml_.pyo matches<br/>
/usr/lib/python2.7/site-packages/neutron/db/migration/alembic_migrations/versions/mitaka/expand/2514b1c6b01a_cloud_floating_ip_metadata.py:&quot;&quot;&quot;h3c_floating_ip_metadata<br/>
Binary file /usr/lib/python2.7/site-packages/neutron/db/migration/alembic_migrations/versions/mitaka/expand/2514b1c6b01a_cloud_floating_ip_metadata.pyc matches<br/>
/usr/lib/python2.7/site-packages/neutron/extensions/network_vlan_ranges.py:# Copyright 2016 h3c coporation.<br/>
/usr/lib/python2.7/site-packages/neutron_fwaas/db/firewall/firewall_db.py:        # tmm, add ips/av supported by h3cloudos<br/>
/usr/lib/python2.7/site-packages/neutron_fwaas/db/firewall/firewall_db.py:        # tmm, add ips/av supported by h3cloudos<br/>
/usr/lib/python2.7/site-packages/neutron_fwaas/db/migration/alembic_migrations/versions/4f321802af93_h3c_fwrule_ipsav.py:&quot;&quot;&quot;h3c_fwrule_ipsav<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/_i18n.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/_i18n.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/agent/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/agent/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/agent/h3c_agent.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/agent/h3c_agent.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/config.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/config.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/constants.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/constants.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/exceptions.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/exceptions.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/rest_client.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/rest_client.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/rest_nat_client.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/rest_nat_client.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/topics.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/topics.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/utils.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/utils.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/vcfc_client.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/vcfc_client.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/vcfc_resources.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/common/vcfc_resources.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/dnat_gateway_db.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/dnat_gateway_db.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/h3c_l3_vxlan_db.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/h3c_l3_vxlan_db.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/h3cprovidernet_db.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/h3cprovidernet_db.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/l3_db_h3c.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/l3_db_h3c.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/service_chain_db.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/service_chain_db.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/snat_gateway_db.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/snat_gateway_db.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/vpc_peer_db.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/vpc_peer_db.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/whitelistdb.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/env.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/env.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/script.py.mako<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/versions/liberty/contract/d4aaca23c7a1_initial.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/versions/liberty/contract/d4aaca23c7a1_initial.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/versions/liberty/expand/3f7539f2b0f9_initial.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/alembic_migrations/versions/liberty/expand/3f7539f2b0f9_initial.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/models/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/models/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/models/head.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/db/migration/models/head.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/dnatgatewayextensions.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/dnatgatewayextensions.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/portextensions.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/portextensions.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/snatgatewayextensions.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/snatgatewayextensions.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/vpcpeerextensions.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/vpcpeerextensions.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/vpnconnstatusextensions.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/extensions/whitelist.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/fw/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/fw/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/fw/h3c_fwplugin_driver.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/fw/h3c_fwplugin_driver.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/l3_router/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/l3_router/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/l3_router/h3c_l3_router_plugin.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/l3_router/h3c_l3_router_plugin.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/lb/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/lb/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/lb/h3c_lbplugin_driver_v2.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/lb/h3c_lbplugin_driver_v2.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/mechanism_h3c.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/mechanism_h3c.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/extensions/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/extensions/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/extensions/extension_driver_h3c.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/ml2/extensions/extension_driver_h3c.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/natgateway/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/natgateway/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/natgateway/dnat_gateway_plugin.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/natgateway/dnat_gateway_plugin.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/natgateway/snat_gateway_plugin.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/natgateway/snat_gateway_plugin.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/qos/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/qos/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/qos/qos_driver.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/qos/qos_driver.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/base.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/base.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/main.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/main.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/main.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/main.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/parser.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/parser.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/nova_patch/virt/libvirt/s1020v_libvirt_util.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/nova_patch/virt/libvirt/s1020v_libvirt_util.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/nova_patch/virt/vmwareapi/s1020v_vmware_util.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/compute/nova_patch/virt/vmwareapi/s1020v_vmware_util.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/main.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/main.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/files/fwaas_driver.ini<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/files/h3c-agent.service<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/scripts/installer/controller/files/ml2_conf_h3c.ini<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/servicechain/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/servicechain/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/servicechain/service_chain.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/servicechain/service_chain.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpcpeer/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpcpeer/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpcpeer/vpc_peer_plugin.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpcpeer/vpc_peer_plugin.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpn/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpn/__init__.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpn/h3c_vpnplugin_driver.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpn/h3c_vpnplugin_driver.pyc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/vpn/vpn_connstatus_plugin.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/whitelist/__init__.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/SOURCES.txt:networking_h3c/whitelist/whitelistplugin.py<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:h3c_l3_router = networking_h3c.l3_router.h3c_l3_router_plugin:H3CL3RouterPlugin<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:vpnconnstatus = networking_h3c.vpn.vpn_connstatus_plugin:VpnConnstatusPlugin<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:whitelist = networking_h3c.whitelist.whitelistplugin:WhitelistPlugin<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:dnat_gateway = networking_h3c.natgateway.dnat_gateway_plugin:DNATGatewayPlugin<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:vpc_peer = networking_h3c.vpcpeer.vpc_peer_plugin:VPCPeerPlugin<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:snat_gateway = networking_h3c.natgateway.snat_gateway_plugin:SNATGatewayPlugin<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:ml2_extension_h3c = networking_h3c.ml2.extensions.extension_driver_h3c:ExtensionDriverH3C<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:ml2_h3c = networking_h3c.ml2.mechanism_h3c:H3CMechanismDriver<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:h3c-vcfplugin = networking_h3c.scripts.installer.main:main<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:h3c-agent = networking_h3c.agent.h3c_agent:main<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:[networking_h3c.installer.openvswitch]<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:hook = networking_h3c.scripts.installer.compute.main:ComputeNodeOvsInstallerHook<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:[networking_h3c.installer.controller]<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:hook = networking_h3c.scripts.installer.controller.main:ControllerNodeInstallerHook<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:networking-h3c = networking_h3c.db.migration:alembic_migrations<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:[networking_h3c.installer]<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:controller = networking_h3c.scripts.installer.controller.main:ControllerNodeInstaller<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:compute = networking_h3c.scripts.installer.compute.main:ComputeNodeInstaller<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:openvswitch = networking_h3c.scripts.installer.compute.main:ComputeNodeOvsInstaller<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:[networking_h3c.installer.compute]<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/entry_points.txt:hook = networking_h3c.scripts.installer.compute.main:ComputeNodeInstallerHook<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/EGG-INFO/top_level.txt:networking_h3c<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/_i18n.py:DOMAIN = &quot;networking-h3c&quot;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/_i18n.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:from networking_h3c.common import config as h_config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:from networking_h3c.fw import h3c_fwplugin_driver<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:            self.fwaas_driver = h3c_fwplugin_driver.H3CFwaasDriver(<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:        LOG.debug(&quot;h3c get agents&#39;s data from neutron : %s&quot;, neutron_list)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:        LOG.debug(&quot;h3c get %s&#39;s data from vcfc: %s&quot;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:        LOG.debug(&quot;h3c remove %s&#39;s ips from neutron : %s&quot;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:        LOG.debug(&quot;h3c create %s&#39;s ips to neutron: %s&quot;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:                        LOG.debug(&quot;h3c get vcfc %s detail info: %s&quot;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:                        LOG.error(&quot;h3c create agent error: %s&quot;, e)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:def main(manager=&#39;networking_h3c.agent.h3c_agent.H3CL3NATAgent&#39;):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.py:        binary=&#39;h3c-agent&#39;,<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/agent/h3c_agent.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/config.py:from networking_h3c._i18n import _<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/config.py:from networking_h3c.common import constants<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/config.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/constants.py:VCFC_VDS_URL = &#39;vds/1.0/h3c_vdsconf&#39;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/constants.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/exceptions.py:from networking_h3c._i18n import _<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/exceptions.py:    message = _(&quot;H3CSecurityGroupRule %(h3c_security_group_rule_id)s &quot;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/exceptions.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/rest_client.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/rest_client.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/rest_nat_client.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/rest_nat_client.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/topics.py:SERVICE_CONTEXT_NAME = &#39;h3c_service_context&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/topics.py:SERVICE_INSERTION_NAME = &#39;h3c_service_insertion&#39;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/topics.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/utils.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.common import exceptions as h_exc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.common import rest_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.common import utils<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.common import vcfc_resources<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:from networking_h3c.db import service_chain_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:    def make_h3c_loadbalancer_create_dict(self, loadbalancer):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:        update_attrs = self.make_h3c_loadbalancer_update_dict(loadbalancer)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:    def make_h3c_loadbalancer_update_dict(self, loadbalancer):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:    def create_loadbalancer(self, h3c_loadbalancer):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:        body = self.make_h3c_loadbalancer_create_dict(h3c_loadbalancer)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:    def update_loadbalancer(self, id, h3c_loadbalancer):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.py:        body = self.make_h3c_loadbalancer_update_dict(h3c_loadbalancer)<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_client.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/common/vcfc_resources.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/dnat_gateway_db.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/dnat_gateway_db.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/dnat_gateway_db.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/h3c_l3_vxlan_db.py:    <strong>tablename</strong> = &#39;h3c_l3_vxlan_allocations&#39;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/h3c_l3_vxlan_db.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/h3cprovidernet_db.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/h3cprovidernet_db.py:from networking_h3c.common import exceptions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/h3cprovidernet_db.py:    <strong>tablename</strong> = &#39;h3c_loadbalancers&#39;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/h3cprovidernet_db.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:from networking_h3c._i18n import _<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:from networking_h3c.common import exceptions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:from networking_h3c.db import h3c_l3_vxlan_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:            self.h3c_l3_vxlan = h3c_l3_vxlan_db.H3CL3VxlanDriver()<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:            self.h3c_l3_vxlan.initialize()<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:            segment_id = self.h3c_l3_vxlan.create_l3_segments(<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:                    self.h3c_l3_vxlan.release_segment(context.session,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.py:            self.h3c_l3_vxlan.release_segment(context.session, rid)<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/l3_db_h3c.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/__init__.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/env.py:H3C_VERSION_TABLE = &#39;h3c_alembic_version&#39;<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/env.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py:    op.create_table(&#39;h3c_servicecontexts&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py:    op.create_table(&#39;h3c_serviceinsertions&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py:    op.create_table(&#39;h3c_servicenodes&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py:                              sa.ForeignKey(&#39;h3c_serviceinsertions.id&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py:    op.create_table(&#39;h3c_loadbalancers&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.py:    op.create_table(&#39;h3c_l3_vxlan_allocations&#39;,<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/kilo_initial.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/liberty/contract/d4aaca23c7a1_initial.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/alembic_migrations/versions/liberty/expand/3f7539f2b0f9_initial.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/models/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/models/head.py:from networking_h3c.db import h3c_l3_vxlan_db  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/models/head.py:from networking_h3c.db import h3cprovidernet_db  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/models/head.py:from networking_h3c.db import service_chain_db  # noqa<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/migration/models/head.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.py:from networking_h3c.common import exceptions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.py:    <strong>tablename</strong> = &#39;h3c_servicecontexts&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.py:    <strong>tablename</strong> = &#39;h3c_servicenodes&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.py:                             sa.ForeignKey(&#39;h3c_serviceinsertions.id&#39;))<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.py:    <strong>tablename</strong> = &#39;h3c_serviceinsertions&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.py:                                     backref=&#39;h3c_serviceinsertions&#39;,<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/service_chain_db.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/snat_gateway_db.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/snat_gateway_db.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/snat_gateway_db.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/vpc_peer_db.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/vpc_peer_db.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/vpc_peer_db.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/whitelistdb.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/whitelistdb.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/db/whitelistdb.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/__init__.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/dnatgatewayextensions.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/portextensions.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/snatgatewayextensions.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/vpcpeerextensions.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/vpnconnstatusextensions.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/extensions/whitelist.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:from networking_h3c.common import topics<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:        self.h3c_firewall = H3CFireWall()<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:            lock = lockutils.lock(&#39;h3c_firewall&#39;)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:            lock = lockutils.lock(&#39;h3c_firewall_%s&#39; % fw_id)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:            lock = lockutils.lock(&#39;h3c_firewall&#39;)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:            lock = lockutils.lock(&#39;h3c_firewall_%s&#39; % fw_id)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:            lock = lockutils.lock(&#39;h3c_firewall&#39;)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.py:            lock = lockutils.lock(&#39;h3c_firewall_%s&#39; % fw_id)<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/fw/h3c_fwplugin_driver.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/l3_router/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/l3_router/h3c_l3_router_plugin.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/l3_router/h3c_l3_router_plugin.py:from networking_h3c.db import l3_db_h3c<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/l3_router/h3c_l3_router_plugin.py:                        l3_db_h3c.H3CL3DBMixin):<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/l3_router/h3c_l3_router_plugin.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:from networking_h3c.common import constants as const<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:from networking_h3c.common import exceptions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:from networking_h3c.db import h3cprovidernet_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:from networking_h3c.servicechain import service_chain<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        self.h3c_loadbalancer = H3CLoadbalancer(plugin)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        self.h3c_loadbalancer.handle_listener_creation(context, listener)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        self.h3c_loadbalancer.handle_listener_updation(context, old_listener, listener)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        self.h3c_loadbalancer.handle_listener_deletion(context, listener)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        #self.h3c_loadbalancer.handle_pool_creation(context, pool)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        #self.h3c_loadbalancer.handle_pool_deletion(context, pool)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        self.loadbalancer = h3cprovidernet_db.LoadbalancerDb()<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                        &#39;name&#39;: &#39;h3c_lbv2_&#39; + listener.tenant_id[:8],<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                    &#39;name&#39;: &#39;h3c_lbv2_&#39; + listener.id[:8],<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                            &#39;name&#39;: &#39;h3c_lbv2_&#39; + listener.tenant_id[:8],<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                            &#39;name&#39;: &#39;h3c_lbv2_&#39; + listener.id[:8],<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:        h3c_lb = {&#39;name&#39;: &#39;h3c_loadbalancer&#39;, &#39;description&#39;: pool.name,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            h3c_lb[&#39;mode&#39;] = self.lb_type[:-6]<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            h3c_lb[&#39;mode&#39;] = const.CGSR<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            self.create_h3c_loadbalancer(context, h3c_lb, pool)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                self.update_h3c_loadbalancer(context, h3c_lb, &#39;add&#39;, pool.id)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                self.create_h3c_loadbalancer(context, h3c_lb, pool)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            h3c_lb = self.loadbalancer.get_loadbalancer(<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            if h3c_lb:<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                    h3c_lb[&#39;subnet_id&#39;] = subnet_id<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                    self.delete_h3c_loadbalancer(context, h3c_lb)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                    self.update_h3c_loadbalancer(context, h3c_lb, &#39;del&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            h3c_lb = self.loadbalancer.get_loadbalancer(<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:            if h3c_lb:<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                h3c_lb[&#39;subnet_id&#39;] = subnet_id<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:                self.delete_h3c_loadbalancer(context, h3c_lb)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:    def create_h3c_listener(self, context):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:    def update_h3c_listener(self):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:    def delete_h3c_listener(self):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:    def create_h3c_loadbalancer(self, context, loadbalancer, pool):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:    def update_h3c_loadbalancer(self, context, loadbalancer, method, pool_id):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.py:    def delete_h3c_loadbalancer(self, context, loadbalancer):<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/lb/h3c_lbplugin_driver_v2.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/__init__.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/extensions/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/extensions/extension_driver_h3c.py:from networking_h3c import extensions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/extensions/extension_driver_h3c.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:from networking_h3c.common import exceptions as h_exc<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:from networking_h3c.qos import qos_driver as h3c_qos_driver<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:from networking_h3c.servicechain import service_chain<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:        h3c_qos_driver.register()<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:            with lockutils.lock(&#39;h3c_sg_%s&#39; % sg_id, external=True):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:            with lockutils.lock(&#39;h3c_sg_%s&#39; % sg_id, external=True):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:        with lockutils.lock(&#39;h3c_sg_%s&#39; % sg_id, external=True):<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:                    if level[&#39;bound_driver&#39;] == &#39;ml2_h3c&#39;:<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.py:                if level[&#39;bound_driver&#39;] == &#39;ml2_h3c&#39;:<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/ml2/mechanism_h3c.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.db import dnat_gateway_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.db import l3_db_h3c<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.extensions import dnatgatewayextensions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.common import rest_nat_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:from networking_h3c.common import constants<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.py:        self.l3_dbclient = l3_db_h3c.H3CL3DBMixin()<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/dnat_gateway_plugin.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.db import snat_gateway_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.db import l3_db_h3c<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.extensions import snatgatewayextensions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.common import rest_nat_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:from networking_h3c.common import constants<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.py:        self.l3_dbclient = l3_db_h3c.H3CL3DBMixin()<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/natgateway/snat_gateway_plugin.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/qos/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/qos/qos_driver.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/qos/qos_driver.py:            name=&#39;h3c&#39;,<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/qos/qos_driver.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/__init__.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/base.py:from networking_h3c._i18n import _<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/base.py:BACKUP_SUFFIX = &#39;.h3c_bak&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/base.py:        self.log.info(&quot;The *.h3c_bak files are backup files, &quot;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/base.py:            tmp_path = file_path + &#39;.h3c_tmp&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/base.py:            self.log.warning(&quot;Please do not remove the <em>.h3c_bak files.&quot;)<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/base.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/main.py:from networking_h3c._i18n import _<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/main.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/nova_patch/virt/libvirt/s1020v_libvirt_util.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/nova_patch/virt/vmwareapi/s1020v_vmware_util.py:            if vendorspecificconfig.key == &quot;com.h3c.vswitch.domain&quot;]<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/nova_patch/virt/vmwareapi/s1020v_vmware_util.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/compute/parser.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/files/fwaas_driver.ini:driver = networking_h3c.fw.h3c_fwplugin_driver.H3CFwaasDriver<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:H3C_CONF_FILE = &#39;/usr/share/neutron/server/ml2_h3c.conf&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:H3C_AGENT_SERVICE = &#39;h3c-agent.service&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:                     &quot;ml2_conf_h3c.ini &quot; \<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:        subprocess.call([&#39;neutron-db-manage&#39;, &#39;--subproject&#39;, &#39;networking-h3c&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:        proc = subprocess.check_output([&#39;which&#39;, &#39;h3c-agent&#39;]).strip(&#39;\n&#39;)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:        path = NEUTRON_CONF_DIR + &#39;plugins/ml2/ml2_conf_h3c.ini&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:            conf_file = NEUTRON_CONF_DIR + &#39;plugins/ml2/ml2_conf_h3c.ini&#39;<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:            self.copy(DATA_DIR + &#39;ml2_conf_h3c.ini&#39;, conf_file)<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.py:            c.read(DATA_DIR + &#39;ml2_conf_h3c.ini&#39;)<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/controller/main.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/main.py:            description=&#39;networking-h3c installer app&#39;,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/main.py:                &#39;networking_h3c.installer&#39;),<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/scripts/installer/main.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:from networking_h3c._i18n import _<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:from networking_h3c.common import topics as h3c_topics<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:from networking_h3c.db import service_chain_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:                h3c_topics.SERVICE_CONTEXT_DRIVER_TOPIC,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:                             &#39;name&#39;: h3c_topics.SERVICE_INSERTION_NAME,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:            &#39;name&#39;: h3c_topics.SERVICE_CONTEXT_NAME,<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.py:            &#39;name&#39;: h3c_topics.SERVICE_CONTEXT_NAME,<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/servicechain/service_chain.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/vpc_peer_plugin.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/vpc_peer_plugin.py:from networking_h3c.db import vpc_peer_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/vpc_peer_plugin.py:from networking_h3c.extensions import vpcpeerextensions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/vpc_peer_plugin.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/vpc_peer_plugin.py:from networking_h3c.common import constants<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpcpeer/vpc_peer_plugin.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/h3c_vpnplugin_driver.py:from networking_h3c.common import vcfc_client<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/h3c_vpnplugin_driver.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/vpn_connstatus_plugin.py:from networking_h3c.common import config  # noqa<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/vpn_connstatus_plugin.py:from networking_h3c.db import vpc_peer_db<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/vpn_connstatus_plugin.py:from networking_h3c.extensions import vpnconnstatusextensions<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/vpn_connstatus_plugin.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/vpn_connstatus_plugin.py:from networking_h3c.common import constants<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/vpn/vpn_connstatus_plugin.pyc matches<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/__init__.pyc matches<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/whitelistplugin.py:from networking_h3c.extensions import whitelist<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/whitelistplugin.py:from networking_h3c.db import whitelistdb<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/whitelistplugin.py:from networking_h3c.common import vcfc_client<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/whitelistplugin.py:from networking_h3c.common import constants<br/>
/usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/whitelistplugin.py:from networking_h3c.common import exceptions<br/>
Binary file /usr/lib/python2.7/site-packages/VCF_CONTROLLER_PLUGIN-E2507_pike_2019.06-py2.7.egg/networking_h3c/whitelist/whitelistplugin.pyc matches<br/>
/usr/lib/python2.7/site-packages/cinder/api/contrib/h3cloudos/h3c_host_info.py:from cinder.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/cinder/api/contrib/h3cloudos/h3c_host_info.py:authorize = extensions.extension_authorizer(&#39;volume&#39;, &#39;h3c_host_info&#39;)<br/>
/usr/lib/python2.7/site-packages/cinder/api/contrib/h3cloudos/h3c_host_info.py:        nn = self.api.h3c_get_host_info(context, id)<br/>
/usr/lib/python2.7/site-packages/cinder/api/contrib/h3cloudos/h3c_storage_pool.py:from cinder.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/cinder/api/contrib/h3cloudos/h3c_storage_pool.py:authorize = extensions.extension_authorizer(&#39;volume&#39;, &#39;h3c_storage_pool&#39;)<br/>
/usr/lib/python2.7/site-packages/cinder/api/contrib/h3cloudos/h3c_storage_pool.py:        nn = self.api.h3c_get_storage_pool(context, id)<br/>
/usr/lib/python2.7/site-packages/cinder/h3cloudos/h3c_extend.py:    def h3c_get_storage_pool(self, context, host):<br/>
/usr/lib/python2.7/site-packages/cinder/h3cloudos/h3c_extend.py:            return self.volume_rpcapi.h3c_get_storage_pool(context, host)<br/>
/usr/lib/python2.7/site-packages/cinder/h3cloudos/h3c_extend.py:    def h3c_get_host_info(self, context, host):<br/>
/usr/lib/python2.7/site-packages/cinder/h3cloudos/h3c_extend.py:            return self.volume_rpcapi.h3c_get_host_info(context, host)<br/>
/usr/lib/python2.7/site-packages/cinder/volume/manager.py:    def h3c_get_storage_pool(self, context):<br/>
/usr/lib/python2.7/site-packages/cinder/volume/manager.py:    def h3c_get_host_info(self, context):<br/>
/usr/lib/python2.7/site-packages/cinder/volume/rpcapi.py:    def h3c_get_storage_pool(self, context, host):<br/>
/usr/lib/python2.7/site-packages/cinder/volume/rpcapi.py:        return cctxt.call(context, &#39;h3c_get_storage_pool&#39;)<br/>
/usr/lib/python2.7/site-packages/cinder/volume/rpcapi.py:    def h3c_get_host_info(self, context, host):<br/>
/usr/lib/python2.7/site-packages/cinder/volume/rpcapi.py:        return cctxt.call(context, &#39;h3c_get_host_info&#39;)<br/>
/usr/lib/python2.7/site-packages/keystone/auth/controllers.py:from keystone.h3c_taurus.auth import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/h3c_taurus/adapter.py:from keystone.h3c_taurus import session<br/>
/usr/lib/python2.7/site-packages/keystone/h3c_taurus/auth/adapter.py:from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/h3c_taurus/project/taurus.py:from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/h3c_taurus/role/taurus.py:from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/h3c_taurus/role_assignment/taurus.py:from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/h3c_taurus/user/taurus.py:from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/token/controllers.py:from keystone.h3c_taurus.auth import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/token/provider.py:        from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/keystone/token/provider.py:        from keystone.h3c_taurus import adapter<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_attach_interface.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_attach_interface.py:            vif = self.api.h3c_attach_interface(context,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_cancel_managedVM.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_cancel_managedVM.py:        self.api.h3c_cancel_managed_VM(context, instance)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_get_gpu_conf.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_get_gpu_conf.py:        nn = self.api.h3c_getGPUConf(context, id)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_host_info.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_host_info.py:        nn = self.api.h3c_get_host_info(context, id)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_hostdetail.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_hostdetail.py:            nn = self.api.h3c_vmwhostdetail(context, id)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_hostdetail.py:                nn = self.api.h3c_vmwhostdetail(context, id)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_hostpool.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_hostpool.py:        nn = self.api.h3c_getHostPool(context, id)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_manual_assign_sync_power_state.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_manual_assign_sync_power_state.py:            return self.api.h3c_manualsyncvmpowerstate(context, id, instance_uuid)<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_os_interface.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_os_interface.py:            vif = self.api.h3c_attach_interface(context,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_phycial_mappings.py:from nova.h3cloudos import h3c_extend as extAPI<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/h3cloudos/h3c_phycial_mappings.py:                azonePhycialMappingInfo = self.api.h3c_phycial_mappings(context, hosts[0])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_attach_interface<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_cancel_managedVM<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_change_VMstate<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_get_gpu_conf<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_host_info<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_hostdetail<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_hostpool<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_manual_assign_sync_power_state<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_os_interface<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:from nova.api.openstack.compute.h3cloudos import h3c_phycial_mappings<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_attach_interface_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_attach_interface.AttachInterfaceController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_cancel_managedVM_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_cancel_managedVM.CancelManagedVMController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_change_VMstate_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_change_VMstate.ChangeVMstateController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_get_gpu_conf_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_get_gpu_conf.GetGPUConf, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_host_info_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_host_info.HostInfoController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_hostdetail_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_hostdetail.HostDetailController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_hostpool_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_hostpool.HostPoolController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_manual_assign_sync_power_state_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_manual_assign_sync_power_state.ManualSyncVMPowerStateController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_os_interface_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_os_interface.AttachInterfaceController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:h3c_phycial_mappings_controller = functools.partial(_create_controller,<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    h3c_phycial_mappings.PhycialMappingsController, [], [])<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;POST&#39;: [h3c_attach_interface_controller, &#39;create&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;DELETE&#39;: [h3c_cancel_managedVM_controller, &#39;delete&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    (&#39;/h3c_change_VMstate/{id}&#39;, {<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;PUT&#39;: [h3c_change_VMstate_controller, &#39;update&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;GET&#39;: [h3c_get_gpu_conf_controller, &#39;show&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;GET&#39;: [h3c_host_info_controller, &#39;show&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    (&#39;/h3c_hostdetail/{id}&#39;, {<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;GET&#39;: [h3c_hostdetail_controller, &#39;show&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;GET&#39;: [h3c_hostpool_controller, &#39;show&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    (&#39;/h3c_manual_assign_sync_power_state/{id}&#39;, {<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;PUT&#39;: [h3c_manual_assign_sync_power_state_controller, &#39;update&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    (&#39;/servers/{server_id}/h3c-os-interface&#39;, {<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;POST&#39;: [h3c_os_interface_controller, &#39;create&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:    (&#39;/h3c-phycial-mappings&#39;, {<br/>
/usr/lib/python2.7/site-packages/nova/api/openstack/compute/routes.py:        &#39;GET&#39;: [h3c_phycial_mappings_controller, &#39;index&#39;]<br/>
/usr/lib/python2.7/site-packages/nova/compute/api.py:from oslo_h3c import h3c_metadata as h3c_meta<br/>
/usr/lib/python2.7/site-packages/nova/compute/api.py:                    h3c_meta.update(instance[&#39;metadata&#39;], &#39;bind_instance&#39;, True)<br/>
/usr/lib/python2.7/site-packages/nova/compute/api.py:    def h3c_change_cas_instance_display_name(self, context, host, instance, name):<br/>
/usr/lib/python2.7/site-packages/nova/compute/api.py:        self.compute_rpcapi.h3c_change_cas_instance_display_name(context, host, instance, name)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:from oslo_h3c import h3c_metadata as h3c_meta_util<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_getHostPool(self, context):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_vmwhostdetail(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_phycial_mappings(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_get_host_info(self, context):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_change_cas_instance_display_name(self, context, instance, name):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_manualsyncvmpowerstate(self, context, host, instance_uuid):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                self.h3c_query_driver_power_state_and_sync(context,db_instance)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_getGPUConf(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_query_driver_power_state_and_sync(self, context, db_instance):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:            self.h3c_sync_instance_power_state(context,<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_sync_instance_power_state(self, context, db_instance, vm_power_state,<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def _h3c_validate_gpu(self, context, instance, node):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:            self._h3c_validate_gpu(context, instance, node)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                        network_info = self.h3c_get_vswitchName(context,instance,network_info)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_cancel_managed_VM(self, context, instance, bdms, reservations):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        LOG.info(&quot;</em>**<strong><em>in the function of h3c_cancel_managed_VM</em></strong>***&quot;)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        self.do_h3c_cancel_managed_VM(context, instance, bdms, reservations)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def do_h3c_cancel_managed_VM(self, context, instance, bdms, reservations):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                self.driver.h3c_removeManagedBy(context, instance)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def process_h3c_meta(self, context, instance, change):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        h3c_meta = change[1]<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        for key, val in h3c_meta.items():<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        h3c_meta = h3c_meta_util.get_diff(diff)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        if h3c_meta:<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:            self.process_h3c_meta(context, instance, h3c_meta)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_get_host_info(self, ctxt):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        return self.manager.h3c_get_host_info(ctxt)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:            self._h3c_update_gpu(instance, instance.old_flavor)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:        if h3c_meta_util.get(instance[&#39;metadata&#39;], &#39;bind_instance&#39;):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def _h3c_update_gpu(instance, flavor):<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:            self._h3c_update_gpu(instance, instance_type)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                    self._h3c_update_gpu(instance, old_instance_type)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_attach_interface(self, context, instance, network_id, port_id,<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                network_info = self.h3c_get_vswitchName(context,instance,network_info)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                self.driver.h3c_attach_interface(context, instance, image_meta, network_info[0],bodyinfo)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:                        self.driver.h3c_attach_interface(context, instance, image_meta, network_info[0], bodyinfo)<br/>
/usr/lib/python2.7/site-packages/nova/compute/manager.py:    def h3c_get_vswitchName(self,context,instance,network_info):<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_instance_claim(context, instance, nodename, limits=None):<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_instance_claim(context, instance, nodename, limits)<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_rebuild_claim(context, instance, nodename, limits=None,<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_rebuild_claim(context, instance, nodename, limits,<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_resize_claim(context, instance, instance_type, nodename,<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_resize_claim(context, instance, instance_type, nodename,<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_abort_instance_claim(context, instance, nodename):<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_abort_instance_claim(context, instance, nodename)<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_drop_move_claim(context, instance, nodename,<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_drop_move_claim(context, instance, nodename,<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_update_usage(context, instance, nodename):<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_update_usage(context, instance, nodename)<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        def h3c_update_available_resource(context, resources):<br/>
/usr/lib/python2.7/site-packages/nova/compute/resource_tracker.py:        return h3c_update_available_resource(context, resources)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_attach_interface(self, ctxt, instance, network_id, port_id,<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctxt.call(ctxt, &#39;h3c_attach_interface&#39;,<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_get_host_info(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_get_host_info&#39;)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_getHostPool(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_getHostPool&#39;)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_vmwhostdetail(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_vmwhostdetail&#39;, host=host)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_phycial_mappings(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_phycial_mappings&#39;, host=host)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_change_cas_instance_display_name(self, context, host, instance, name):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_change_cas_instance_display_name&#39;, instance=instance, name=name)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_manualsyncvmpowerstate(self, context, host, instance_uuid):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_manualsyncvmpowerstate&#39;, host=host, instance_uuid=instance_uuid)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_getGPUConf(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctex.call(context, &#39;h3c_getGPUConf&#39;, host=host)<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:    def h3c_cancel_managed_VM(self, ctxt, instance, bdms, reservations=None):<br/>
/usr/lib/python2.7/site-packages/nova/compute/rpcapi.py:        return cctxt.cast(ctxt, &#39;h3c_cancel_managed_VM&#39;,<br/>
/usr/lib/python2.7/site-packages/nova/db/api.py:import h3c_mysql<br/>
/usr/lib/python2.7/site-packages/nova/db/api.py:def h3c_service_get_all_by_binary(celldb):<br/>
/usr/lib/python2.7/site-packages/nova/db/api.py:    return h3c_mysql.service_get_all_by_binary(celldb)<br/>
/usr/lib/python2.7/site-packages/nova/db/api.py:def h3c_compute_node_get_all(celldb):<br/>
/usr/lib/python2.7/site-packages/nova/db/api.py:    return h3c_mysql.compute_node_get_all(celldb)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_get_host_info(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            return self.compute_rpcapi.h3c_get_host_info(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_getHostPool(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            return self.compute_rpcapi.h3c_getHostPool(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_vmwhostdetail(self,context,host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            return self.compute_rpcapi.h3c_vmwhostdetail(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_phycial_mappings(self,context,host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            return self.compute_rpcapi.h3c_phycial_mappings(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_getGPUConf(self,context,host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            return self.compute_rpcapi.h3c_getGPUConf(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_attach_interface(self, context, instance, network_id, port_id,<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:        return self.compute_rpcapi.h3c_attach_interface(context,<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_manualsyncvmpowerstate(self,context,host,instance_uuid):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            return self.compute_rpcapi.h3c_manualsyncvmpowerstate(context, host, instance_uuid)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:    def h3c_cancel_managed_VM(self, context, instance):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py:            self.compute_rpcapi.h3c_cancel_managed_VM(context, instance, bdms,<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_get_host_info(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            return self.compute_rpcapi.h3c_get_host_info(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_getHostPool(self, context, host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            return self.compute_rpcapi.h3c_getHostPool(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_vmwhostdetail(self,context,host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            return self.compute_rpcapi.h3c_vmwhostdetail(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_phycial_mappings(self,context,host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            return self.compute_rpcapi.h3c_phycial_mappings(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_getGPUConf(self,context,host):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            return self.compute_rpcapi.h3c_getGPUConf(context, host)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_attach_interface(self, context, instance, network_id, port_id,<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:        return self.compute_rpcapi.h3c_attach_interface(context,<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_manualsyncvmpowerstate(self,context,host,instance_uuid):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            return self.compute_rpcapi.h3c_manualsyncvmpowerstate(context, host, instance_uuid)<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:    def h3c_cancel_managed_VM(self, context, instance):<br/>
/usr/lib/python2.7/site-packages/nova/h3cloudos/h3c_extend.py_sp00_bak:            self.compute_rpcapi.h3c_cancel_managed_VM(context, instance, bdms,<br/>
/usr/lib/python2.7/site-packages/nova/network/neutronv2/api.py:    def get_customed_by_h3c(self, context, network_uuid):<br/>
/usr/lib/python2.7/site-packages/nova/objects/compute_node.py:    def h3c_get_all(cls, celldb):<br/>
/usr/lib/python2.7/site-packages/nova/objects/compute_node.py:        return db.h3c_compute_node_get_all(celldb)<br/>
/usr/lib/python2.7/site-packages/nova/objects/host_mapping.py:def h3c_discover_hosts(ctxt, host):<br/>
/usr/lib/python2.7/site-packages/nova/objects/service.py:        objects.host_mapping.h3c_discover_hosts(self._context, self.host)<br/>
/usr/lib/python2.7/site-packages/nova/objects/service.py:    def h3c_get_by_binary(cls, celldb):<br/>
/usr/lib/python2.7/site-packages/nova/objects/service.py:        return db.h3c_service_get_all_by_binary(celldb)<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/filter_scheduler.py:        selected_host.h3c_consume_gpu_from_request(spec_obj)<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:    def h3c_update(self, attrs, compute=None):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:                self.h3c_update_from_compute_node(attrs, compute)<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:    def h3c_update_from_compute_node(self, attrs, compute):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:    def h3c_consume_gpu_from_request(self, spec_obj):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:    def h3c_get_computes_for_cells(self, context, cells, compute_uuids=None):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:                objects.ComputeNodeList.h3c_get_all(cell.database_connection))<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:                    for service in objects.ServiceList.h3c_get_by_binary(<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:        compute_nodes, services = self.h3c_get_computes_for_cells(context,<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:        return self.h3c_get_host_states(context, compute_nodes, services)<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:    def h3c_get_host_states(self, context, compute_nodes, services):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:                    host_state = self.h3c_host_state_cls(host, node,<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/host_manager.py:                host_state.h3c_update(attrs, compute)<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/ironic_host_manager.py:    def h3c_is_ironic_compute(compute):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/ironic_host_manager.py:    def h3c_host_state_cls(self, host, node, cell, <strong>kwargs):<br/>
/usr/lib/python2.7/site-packages/nova/scheduler/ironic_host_manager.py:        if compute and self.h3c_is_ironic_compute(compute):<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py:    def h3c_attach_interface(self,context,  instance, image_meta, vif,bodyinfo):<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py:        self._vmops.h3c_attach_interface(context, instance, image_meta, vif,bodyinfo)<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py:    def h3c_removeManagedBy(self,context,  instance):<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py:        self._vmops.h3c_removeManagedBy(instance)<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/driver.py:        return self._vmops.h3c_macs_for_instance(instance)<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vif.py:    network=netapi.get_customed_by_h3c(context, id)<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vm_util.py:    LOG.info(&quot;</strong><strong>h3c_attach_interface vmpassword</strong>**<strong>:::%s&quot;, vmpassword)<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py:                                         if vendorSpecificConfig.key == &quot;com.h3c.vswitch.domain&quot;]<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py:    def h3c_attach_interface(self, context, instance, image_meta, vif, bodyinfo):<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py:    def h3c_removeManagedBy(self,instance):<br/>
/usr/lib/python2.7/site-packages/nova/virt/vmwareapi/vmops.py:    def h3c_macs_for_instance(self, instance):<br/>
/usr/lib/python2.7/site-packages/nova/virt/xenapi/vif.py:    network=netapi.get_customed_by_h3c(context, id)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    h3c metadata for openstack<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    H3C_META = &#39;h3c_meta&#39;<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def <strong>init</strong>(self, metadata, h3c_metadata=None):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        if h3c_metadata and not self.has_h3c_meta():<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:            self.set_h3c_meta_str(h3c_metadata)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        h3c_meta = self.get_h3c_meta_str()<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        #self.h3c_meta = H3cMeta._parse(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        h3c_meta = H3cMeta._parse(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        super(H3cMeta, self).__init__(</strong>h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        self.h3c_meta = self<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def has_h3c_meta(self):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def get_h3c_meta_str(self, default=&#39;{}&#39;):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def set_h3c_meta_str(self, h3c_meta_str):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        self.metadata[self.H3C_META] = h3c_meta_str<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def get_h3c_meta(self, key, default=None):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        if key and self.has_h3c_meta():<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:            return self.h3c_meta.get(key, default)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def update_h3c_meta(self, key, value):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        self.h3c_meta[key] = value<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        if self.has_h3c_meta():<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:            H3cMeta._update(self.metadata, self.h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        return self.h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def _parse(h3c_meta):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        if isinstance(h3c_meta, basestring):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:            if re.match(r&quot;\s<em>{\s</em>&#39;.<em>}\s</em>&quot;, h3c_meta):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:                return ast.literal_eval(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:                return json.loads(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        elif isinstance(h3c_meta, dict):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:            return h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:            raise ValueError(&#39;Invalid h3c-metadata: &quot;%s&quot;&#39; % h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    def _update(metadata, h3c_meta):<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        h3c_meta_str = json.dumps(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        metadata[H3cMeta.H3C_META] = h3c_meta_str<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    h3c_meta = H3cMeta(metadata)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    return h3c_meta.has_h3c_meta()<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    h3c_meta = H3cMeta(metadata)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:        return h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    return h3c_meta.get_h3c_meta(key, None)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    h3c_meta = H3cMeta(None, change[1])<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    return change[0], h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    h3c_meta = H3cMeta(metadata)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    h3c_meta.update_h3c_meta(key, value)<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:    return h3c_meta.get_metadata()<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:metadata = {&#39;h3c_meta&#39;: &#39;{&quot;fuck&quot;: &quot;fuck-value&quot;}&#39;}<br/>
/usr/lib/python2.7/site-packages/oslo/h3c/h3c_metadata.py:metadata[&#39;h3c_meta&#39;] = (&#39;+&#39;, metadata[&#39;h3c_meta&#39;])<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    h3c metadata for openstack<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    H3C_META = &#39;h3c_meta&#39;<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def <strong>init</strong>(self, metadata, h3c_metadata=None):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        if h3c_metadata and not self.has_h3c_meta():<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:            self.set_h3c_meta_str(h3c_metadata)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        h3c_meta = self.get_h3c_meta_str()<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        #self.h3c_meta = H3cMeta._parse(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        h3c_meta = H3cMeta._parse(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        super(H3cMeta, self).__init__(*<em>h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        self.h3c_meta = self<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def has_h3c_meta(self):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def get_h3c_meta_str(self, default=&#39;{}&#39;):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def set_h3c_meta_str(self, h3c_meta_str):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        self.metadata[self.H3C_META] = h3c_meta_str<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def get_h3c_meta(self, key, default=None):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        if key and self.has_h3c_meta():<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:            return self.h3c_meta.get(key, default)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def update_h3c_meta(self, key, value):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        self.h3c_meta[key] = value<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        if self.has_h3c_meta():<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:            H3cMeta._update(self.metadata, self.h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        return self.h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def _parse(h3c_meta):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        if isinstance(h3c_meta, basestring):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:            if re.match(r&quot;\s</em>{\s<em>&#39;.</em>}\s*&quot;, h3c_meta):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:                return ast.literal_eval(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:                return json.loads(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        elif isinstance(h3c_meta, dict):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:            return h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:            raise ValueError(&#39;Invalid h3c-metadata: &quot;%s&quot;&#39; % h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    def _update(metadata, h3c_meta):<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        h3c_meta_str = json.dumps(h3c_meta)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        metadata[H3cMeta.H3C_META] = h3c_meta_str<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    h3c_meta = H3cMeta(metadata)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    return h3c_meta.has_h3c_meta()<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    h3c_meta = H3cMeta(metadata)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:        return h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    return h3c_meta.get_h3c_meta(key, None)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    h3c_meta = H3cMeta(None, change[1])<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    return change[0], h3c_meta<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    h3c_meta = H3cMeta(metadata)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    h3c_meta.update_h3c_meta(key, value)<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:    return h3c_meta.get_metadata()<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:metadata = {&#39;h3c_meta&#39;: &#39;{&quot;fuck&quot;: &quot;fuck-value&quot;}&#39;}<br/>
/usr/lib/python2.7/site-packages/oslo_h3c/h3c_metadata.py:metadata[&#39;h3c_meta&#39;] = (&#39;+&#39;, metadata[&#39;h3c_meta&#39;])<br/>
/usr/lib/python2.7/site-packages/sahara/plugins/ambari/deploy.py:        &quot;default_password&quot;: &quot;h3cDataEngine&quot;,<br/>
/usr/lib/python2.7/site-packages/sahara/plugins/dataengine/deploy.py:        &quot;default_password&quot;: &quot;h3cDataEngine&quot;,<br/>
/usr/lib/systemd/system/h3c-agent.service:ExecStart=/usr/bin/h3c-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini --config-file=/etc/neutron/l3_agent.ini --config-file=/etc/neutron/fwaas_driver.ini --config-file=/etc/neutron/plugins/ml2/ml2_conf_h3c.ini --log-file /var/log/neutron/l3-agent.log<br/>
Binary file /usr/share/i18n/charmaps/ISO-8859-15.gz matches<br/>
/usr/share/neutron/l3_agent/fwaas_driver.conf:driver = networking_h3c.fw.h3c_fwplugin_driver.H3CFwaasDriver<br/>
/usr/share/neutron/server/neutron_lbaas.conf:service_provider = LOADBALANCERV2:H3C:networking_h3c.lb.h3c_lbplugin_driver_v2.H3CLbaasv2PluginDriver:default<br/>
/usr/share/neutron/server/neutron_vpnaas.conf:service_provider = VPN:H3C:networking_h3c.vpn.h3c_vpnplugin_driver.H3CVpnPluginDriver:default<br/>
[root@neutron-service /]# </p>

<pre><code class="language-text"></code></pre>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/6/28</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='opentstack-neutron.html'>opentstack-neutron</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
			<div class="article">
                <a class="clearlink" href="15616076768930.html">
                
                  <h1>natgateway功能项目</h1>
                  <div class="a-content">
                      
                      <div class="a-content-text">
                        
                        	<ul>
<li>
<a href="#toc_0">整体框架图</a>
</li>
<li>
<a href="#toc_1">natgateway功能方案</a>
<ul>
<li>
<a href="#toc_2">natgateway neutron plugin实现</a>
</li>
<li>
<a href="#toc_3">natgateway agent实现</a>
<ul>
<li>
<a href="#toc_4">snat功能实现</a>
<ul>
<li>
<a href="#toc_5">snat功能验证</a>
<ul>
<li>
<a href="#toc_6">删除默认网关配置snat验证</a>
</li>
<li>
<a href="#toc_7">snat与eip共存验证</a>
</li>
<li>
<a href="#toc_8">snat与租管互通验证</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#toc_9">natgateway agent snat功能接口</a>
</li>
<li>
<a href="#toc_10">dnat功能实现</a>
<ul>
<li>
<ul>
<li>
<a href="#toc_11">验证eip与dnat共存情况下,dnat功能是否可用</a>
</li>
<li>
<a href="#toc_12">验证snat与dnat共存情况下，dnat功能是否可用</a>
</li>
<li>
<a href="#toc_13">租管互通情况下，dnat功能是否可用</a>
</li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#toc_14">natgateway agent dnat功能接口</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>


<h2 id="toc_0">整体框架图</h2>

<p><img src="media/15616076768930/15616234281714.jpg" alt=""/></p>

<h2 id="toc_1">natgateway功能方案</h2>

<ul>
<li>natgateway功能上线之后，将会裁掉默认网关功能，即上线后再创建VPC，则VPC下的vm在未购买eip、snat、dnat的情况下是不能访问外网或者从外网访问的。</li>
<li>关于nat功能上线时，禁止VPC默认网关生效的ACL规则由VCFC下发配置时生效。</li>
<li>为满足租管互通需求，VCFC会在VPC下的默认网关对应的ACL规则添加一条rule即：允许目的ip地址为cloudos地址的报文通过，即允许访问外网。</li>
</ul>

<h3 id="toc_2">natgateway neutron plugin实现</h3>

<ol>
<li>neutron提供PCO调用接口，完成natgatewey的逻辑处理</li>
<li>neutron部分代码需要维护eip与内网ip的关系，存储到neutron数据库</li>
<li><strong>neutron维护nat group索引 16385~65535, VCFC维护 0~16384</strong></li>
</ol>

<h3 id="toc_3">natgateway agent实现</h3>

<ul>
<li>natgateway agent采用脚本的方式实现，即通过脚本向FW下发相关的snat和dnat配置</li>
<li>snat配置能够支持VPC下某个子网能够访问外网</li>
<li>dnat不支持指定协议，所以目前配置支持tcp、udp指定外网地址与端口号与内网地址端口号的映射</li>
</ul>

<h4 id="toc_4">snat功能实现</h4>

<ol>
<li><p>配置snat原则及命令：</p>
<ul>
<li>删除VPC下默认网关ACL对应的permit规则<em>由VCFC创建VPC时配置</em></li>
<li>添加一条ACL规则和一个nat地址组配置，用于存放外网地址信息</li>
<li>在外网接口上将ACL规则与nat地址组规则通过nat outbound绑定</li>
<li>为了区分SDN下发配置与脚本下发配置区别，脚本下载的ACL和nat group规则前缀</li>
</ul>
<pre><code class="language-text">    SDN_ADDR = &#39;UNI_NEUTRON_ADDR_&#39;
    SDN_NAT_ACL = &#39;UNI_NEUTRON_NAT_ACL_&#39;
</code></pre>
<ul>
<li><strong>名称前缀要的字母序列要在默认网关之后，详见snat与租管互通验证</strong></li>
</ul></li>
</ol>

<h5 id="toc_5">snat功能验证</h5>

<h6 id="toc_6">删除默认网关配置snat验证</h6>

<ul>
<li><strong>默认网关删除VM不能访问外网，配置snat能够访问外网</strong></li>
<li>创建一个VPC，添加一个vm，vm能够访问外网。</li>
<li>将默认网关的ACL规则设置为deny,vm不能访问外网</li>
</ul>

<pre><code class="language-text">H3C-acl-ipv4-adv-SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc]rule 10000 deny ip vpn-instance 6c42qr08ji88or3pejd7jssnpc
The rule was edited successfully.
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc]dis th
#
acl advanced name SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc
description SDN_ACL_
rule 10000 deny ip vpn-instance 6c42qr08ji88or3pejd7jssnpc
#
return
此时VM 192.168.5.3 地址不能访问外网
</code></pre>

<ul>
<li> 新增一条ACL规则，指定192.168.5.0网段能够放行</li>
</ul>

<pre><code class="language-text">[H3C]acl advanced name SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc_1
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc_1]rule 10001 permit ip vpn-instance 6c42qr08ji88or3pejd7jssnpc source 192.168.5.0 0.0.0.255
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc_1]dis th
#
acl advanced name SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc_1
rule 10001 permit ip vpn-instance 6c42qr08ji88or3pejd7jssnpc source 192.168.5.0 0.0.0.255
#
Return
</code></pre>

<ul>
<li>新增一个nat group（相当于购买一个EIP信息） </li>
</ul>

<pre><code class="language-text">H3C]nat address-group 50 name SDN_ADDR_6c42qr08ji88or3pejd7jssnpc_1
[H3C-address-group-50-SDN_ADDR_6c42qr08ji88or3pejd7jssnpc_1]addr
[H3C-address-group-50-SDN_ADDR_6c42qr08ji88or3pejd7jssnpc_1]address 10.0.46.100 10.0.46.100
</code></pre>

<ul>
<li>将nat group与acl规则绑定并添加到对应的出接口下</li>
</ul>

<pre><code class="language-text">[[H3C-Route-Aggregation2]nat outbound name SDN_NAT_ACL_6c42qr08ji88or3pejd7jssnpc_1 address-group name SDN_ADDR_6c42qr08ji88or3pejd7jssnpc_1 vpn-instance externa
l_vpn
此时192.168.5.3 VM能够ping通外网。
</code></pre>

<h6 id="toc_7">snat与eip共存验证</h6>

<ul>
<li><strong>VM配置EIP功能下，vm能够访问外网，且通过EIP对应的地址转换出去，不会转成snat的eip地址</strong></li>
<li>整体VPC相关配置</li>
</ul>

<pre><code class="language-text">nat static outbound 192.168.6.5 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 103.36.28.146 vpn-instance external_vpn acl name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip reversible
 ip binding vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
  rule 37 pass vrf 6b825g0sv08dcrt0q1gd16bl6o
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 60000 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 60000 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 import ip 192.168.6.0 24 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
 ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 0.0.0.0 0 vpn-instance external_vpn 10.251.179.254 description SDN_ROUTE
 ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 192.168.6.0 24 10.251.164.81 description SDN_ROUTE
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o???nat
    
nat address-group 500 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat
</code></pre>

<ul>
<li>配置默认网关情况下ping 114.114.114.114 能够正常ping通</li>
</ul>

<pre><code class="language-text">acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
    
nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o vpn-instance external_vpn
    
nat address-group 17 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o
 address 103.36.30.4 103.36.30.4
</code></pre>

<p>转化成默认网关地址<br/>
<img src="media/15616076768930/15616154004930.jpg" alt=""/></p>

<ul>
<li>配置默认网关和VM绑定EIP后能够正常ping通114.114.114.114，nat转换地址为eip地址</li>
</ul>

<pre><code class="language-text">acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o

nat static outbound 192.168.6.5 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 103.36.28.146 vpn-instance external_vpn acl name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip reversible
</code></pre>

<p><img src="media/15616076768930/15616155237516.jpg" alt=""/></p>

<ul>
<li>配置默认网关为deny或删除acl，且配置eip，能通，转化地址为eip地址</li>
</ul>

<pre><code class="language-text">#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
 description SDN_ACL_
 rule 10000 deny ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
#

[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
 description SDN_ACL_
#
return
</code></pre>

<p><img src="media/15616076768930/15616155940120.jpg" alt=""/></p>

<ul>
<li>默认网关删除或deny且删除eip配置，配置snat功能，能够ping通，转换地址为snat地址</li>
</ul>

<pre><code class="language-text">#
nat address-group 500 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat
 address 10.0.46.100 10.0.46.100
#
return
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1 source 192.168.6.0 0.0.0.255
#
return
    
nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat vpn-instance external_vpn
    
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
 description SDN_ACL_
#
Return
    
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
#
return
</code></pre>

<p><img src="media/15616076768930/15616156491411.jpg" alt=""/></p>

<ul>
<li>默认网关删除或deny，配置eip地址，配置snat功能，转换地址为eip地址</li>
</ul>

<pre><code class="language-text">#
nat address-group 500 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat
 address 10.0.46.100 10.0.46.100
#
return
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1 source 192.168.6.0 0.0.0.255
#
return
    
nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat vpn-instance external_vpn
    
删除默认网关配置
[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
 description SDN_ACL_
#
return
</code></pre>

<p><img src="media/15616076768930/15616158017702.jpg" alt=""/></p>

<h6 id="toc_8">snat与租管互通验证</h6>

<ul>
<li><strong>配置租管互通出方向走默认网关，snat干掉默认网关之后会导致租管互通不通，解决方案如下，后续为验证过程</strong>
<ul>
<li>目前解决方式：在默认网关配置rule，允许目的ip地址为cloudos地址（内网eip地址）的报文通过</li>
<li>最终解决方案：重新配置一条ACL与nat group，ACL下的rule为允许目的ip地址为cloudos地址（内网eip地址）的报文通过</li>
</ul></li>
<li>  配置了eip也配置了租管互通的100.64网段的网关信息，配置如下：</li>
</ul>

<pre><code class="language-text">nat address-group 501 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght
 nat static outbound 192.168.6.5 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 103.36.28.146 vpn-instance external_vpn acl name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip reversible
nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat vpn-instance external_vpn
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_zght address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght vpn-instance external_vpn
ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 192.168.6.0 24 10.251.164.81 description SDN_ROUTE
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o source 192.168.6.0 0.0.0.255
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_zght
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o destination 100.64.9.0 0.0.0.
</code></pre>

<p>此时显示的IP地址转换出来为EIP的地址即103.36.28.146<br/>
<img src="media/15616076768930/15616159813542.jpg" alt=""/></p>

<ul>
<li>  未配置eip的情况下租管互通的地址转换如下图：<br/>
租管互通配置的acl规则只指定目的地址的情况下地址转换会被snat规则替代，如下：</li>
</ul>

<pre><code class="language-text">[H3C-acl-ipv4-adv-SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip]dis this
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
 rule 10000 deny ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
#
return

#
nat address-group 501 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght
 address 100.64.192.100 100.64.192.100
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_zght
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o destination 100.64.9.0 0.0.0.
</code></pre>

<p>如上所示只指定了目的未指定源地址，则会出现转换成snat配置的那条规则：<br/>
<img src="media/15616076768930/15616164678217.jpg" alt=""/></p>

<ul>
<li>未配置eip的情况下租管互通的地址转换如下图：</li>
</ul>

<pre><code class="language-text">租管互通的acl规则配置：
#
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_zght
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o source 192.168.6.0 0.0.0.255 destination 100.64.9.0 0.0.0.7
#

ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
nat address-group 17 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o
nat address-group 500 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat
nat address-group 501 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght
 nat static outbound 192.168.6.5 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 103.36.28.146 vpn-instance external_vpn acl name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip reversible
 ip binding vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o vpn-instance external_vpn
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat vpn-instance external_vpn
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_zght address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght vpn-instance external_vpn
 rule 37 pass vrf 6b825g0sv08dcrt0q1gd16bl6o
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 60000 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 60000 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 import ip 192.168.6.0 24 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
 ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 0.0.0.0 0 vpn-instance external_vpn 10.251.179.254 description SDN_ROUTE
 ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 192.168.6.0 24 10.251.164.81 description SDN_ROUTE
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
 rule 10000 deny ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o source 192.168.6.0 0.0.0.255
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_zght
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o source 192.168.6.0 0.0.0.255 destination 100.64.9.0 0.0.0.7
</code></pre>

<p>snat规则不变同上,转换后地址如下图所示，仍然未转换到租管互通的100网段地址<br/>
<img src="media/15616076768930/15616165723606.jpg" alt=""/></p>

<ul>
<li>将租管互通的acl规则名称修改为在snat规则之上情况下测试结果。
<ul>
<li>如下配置，与3的唯一区别是outbound的ACL名称租管互通的名称排在SNAT的功能之前，此时租管互通的规则生效，如抓包结果所示转换为租管互通的100网段地址。</li>
</ul></li>
</ul>

<pre><code class="language-text">ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
nat address-group 17 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o
nat address-group 500 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat
nat address-group 501 name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght
 nat static outbound 192.168.6.5 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 103.36.28.146 vpn-instance external_vpn acl name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip reversible
 ip binding vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o vpn-instance external_vpn
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_azght address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght vpn-instance external_vpn
 nat outbound name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat address-group name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_snat vpn-instance external_vpn
 rule 37 pass vrf 6b825g0sv08dcrt0q1gd16bl6o
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 60000 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 60000 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 rule 0 pass vrf 6b825g0sv08dcrt0q1gd16bl6o counting
 import ip 192.168.6.0 24 vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
 ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 0.0.0.0 0 vpn-instance external_vpn 10.251.179.254 description SDN_ROUTE
 ip route-static vpn-instance 6b825g0sv08dcrt0q1gd16bl6o 192.168.6.0 24 10.251.164.81 description SDN_ROUTE
acl advanced name SDN_ADDR_6b825g0sv08dcrt0q1gd16bl6o_zght
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_azght
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o source 192.168.6.0 0.0.0.255 destination 100.64.9.0 0.0.0.7
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_eip
 rule 10000 deny ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o
acl advanced name SDN_NAT_ACL_6b825g0sv08dcrt0q1gd16bl6o_snat
 rule 10000 permit ip vpn-instance 6b825g0sv08dcrt0q1gd16bl6o source 192.168.6.0 0.0.0.255
</code></pre>

<p><img src="media/15616076768930/15616166251616.jpg" alt=""/></p>

<h4 id="toc_9">natgateway agent snat功能接口</h4>

<ul>
<li><p>creat</p>
<ul>
<li>URL <a href="http://10.0.46.156:30458/snat/create">http://10.0.46.156:30458/snat/create</a></li>
<li>PUT 方法</li>
<li>JSON data:</li>
</ul>
<pre><code class="language-text">{
    &quot;vpn-instance&quot;: &quot;ly1234567890&quot;,<br/>
    &quot;eip&quot;: &quot;1.1.1.1&quot;,<br/>
    &quot;address-group&quot;: 65000,<br/>
    &quot;interfacename&quot;: &quot;Ten-GigabitEthernet1/2/1&quot;,<br/>
    &quot;subnet_array&quot;: [{&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;netmask&quot;: 24}]<br/>
}
</code></pre></li>
<li><p>delete</p>
<ul>
<li>URL <a href="http://10.0.46.156:30458/snat/delete">http://10.0.46.156:30458/snat/delete</a></li>
<li>PUT 方法</li>
<li>JSON </li>
</ul>
<pre><code class="language-text">{
    &quot;vpn-instance&quot;: &quot;ly1234567890&quot;,<br/>
    &quot;address-group&quot;: 65000,<br/>
    &quot;interfacename&quot;: &quot;Ten-GigabitEthernet1/2/1&quot;<br/>
}
</code></pre></li>
<li><p>update</p>
<ul>
<li>URL <a href="http://10.0.46.156:30458/snat/update">http://10.0.46.156:30458/snat/update</a></li>
<li>PUT方法</li>
<li>JSON</li>
</ul>
<pre><code class="language-text">{
    &quot;vpn-instance&quot;: &quot;ly1234567890&quot;,<br/>
    &quot;eip&quot;: &quot;1.1.1.2&quot;,<br/>
    &quot;address-group&quot;: 65000,<br/>
    &quot;interfacename&quot;: &quot;Ten-GigabitEthernet1/2/1&quot;,<br/>
    &quot;subnet_array&quot;: [{&quot;ip&quot;: &quot;192.168.2.0&quot;, &quot;netmask&quot;: 24},<br/>
    {&quot;ip&quot;: &quot;192.168.1.0&quot;, &quot;netmask&quot;: 24}]<br/>
}
</code></pre></li>
</ul>

<h4 id="toc_10">dnat功能实现</h4>

<p><strong>dnat功能即下发一条nat server规则即在防火墙上添加DNAT规则如下</strong></p>

<pre><code class="language-text">nat server protocol tcp global 100.64.192.11 54321 vpn-instance external_vpn inside 172.17.1.2 22 vpn-instance 1e54vevhk09j9qo6jdug4tlkgp
</code></pre>

<p>首先需要有一个非VPC网络能够访问VPC网络的环境。当前，在10.0.46.156上，已经存在可用网络，组网图如下：<br/>
<img src="media/15616076768930/15616167139442.jpg" alt=""/></p>

<p>如图所示：<br/>
Border-&gt;Switch属于非VPC网络<br/>
而Border-&gt;Spine属于VPC网络</p>

<p>此时在PC上通过ssh能够登录到VM172.17.1.2的设备上。<br/>
<img src="media/15616076768930/15616167914968.jpg" alt=""/><br/>
抓包如下：<br/>
<img src="media/15616076768930/15616168068085.jpg" alt=""/></p>

<h6 id="toc_11">验证eip与dnat共存情况下,dnat功能是否可用</h6>

<ul>
<li>通过CloudOS将VM绑定EIP(100.64.192.11)</li>
<li>下发命令配置DNAT功能(100.64.192.12:54321.  &lt;-&gt; 172.17.1.2:22)</li>
<li>查看ssh登录结果 </li>
<li><strong>EIP和dnat同时配置时，EIP和dnat均生效，均能访问对应内网服务</strong></li>
</ul>

<p><img src="media/15616076768930/15616168648356.jpg" alt=""/><br/>
<img src="media/15616076768930/15616168742201.jpg" alt=""/><br/>
<img src="media/15616076768930/15616168844698.jpg" alt=""/></p>

<ul>
<li>使用EIP地址也能ssh登录到VM ssh root@100.64.192.11</li>
</ul>

<p><img src="media/15616076768930/15616169156020.jpg" alt=""/></p>

<h6 id="toc_12">验证snat与dnat共存情况下，dnat功能是否可用</h6>

<ul>
<li>配置snat功能，未配置EIP功能</li>
<li>下发命令配置DNAT功能</li>
<li>查看ssh登录结果，通过VM ping外部PC地址
<ul>
<li>snat功能生效</li>
<li>dnat功能生效, 且eip功能失效</li>
<li><strong>snat与dnat不会相互影响，snat能够访问外网，dnat能够被外网访问指定端口</strong></li>
</ul></li>
</ul>

<p><img src="media/15616076768930/15616169845167.jpg" alt=""/><br/>
<img src="media/15616076768930/15616169901270.jpg" alt=""/><br/>
<img src="media/15616076768930/15616170452907.jpg" alt=""/></p>

<h6 id="toc_13">租管互通情况下，dnat功能是否可用</h6>

<ul>
<li>由于租管互通由VM-&gt;Cloudos走的是默认网关功能，与DNAT无关，顾不进行测试。</li>
</ul>

<h4 id="toc_14">natgateway agent dnat功能接口</h4>

<ul>
<li><p>create</p>
<ul>
<li>URL <a href="http://10.0.46.156:30458/dnat/create">http://10.0.46.156:30458/dnat/create</a></li>
<li>PUT 方法</li>
<li>JSON data</li>
</ul>
<pre><code class="language-text">{
    &quot;vpn-instance&quot;: &quot;ly1234567890&quot;,<br/>
    &quot;eip_port&quot;: {&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;port&quot;: 2222},<br/>
    &quot;ip_port&quot;: {&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;port&quot;: 2222},<br/>
    &quot;interfacename&quot;: &quot;Ten-GigabitEthernet1/2/1&quot;<br/>
}
</code></pre></li>
<li><p>delete</p>
<ul>
<li>URL <a href="http://10.0.46.156:30458/dnat/delete">http://10.0.46.156:30458/dnat/delete</a></li>
<li>PUT 方法</li>
<li>JSON data</li>
</ul>
<pre><code class="language-text">{
    &quot;vpn-instance&quot;: &quot;ly1234567890&quot;,<br/>
    &quot;eip_port&quot;: {&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;port&quot;: 2222},<br/>
    &quot;interfacename&quot;: &quot;Ten-GigabitEthernet1/2/1&quot;<br/>
} 
</code></pre></li>
<li><p>update</p>
<ul>
<li>URL <a href="http://10.0.46.156:30458/dnat/update">http://10.0.46.156:30458/dnat/update</a></li>
<li>PUT 方法</li>
<li>JSON data</li>
</ul>
<pre><code class="language-text">{
    &quot;vpn-instance&quot;: &quot;ly1234567890&quot;,<br/>
    &quot;eip_port_old&quot;: {&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;port&quot;: 3333},<br/>
    &quot;eip_port_new&quot;: {&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;port&quot;: 2222},<br/>
    &quot;ip_port&quot;: {&quot;ip&quot;: &quot;192.168.1.1&quot;, &quot;port&quot;: 2222},<br/>
    &quot;interfacename&quot;: &quot;Ten-GigabitEthernet1/2/1&quot;<br/>
}
</code></pre></li>
</ul>

                        
                      </div>
                  </div>
                </a>
                <div class="read-more clearfix">
                  <div class="more-left left">
                  
                    <span class="date">2019/6/27</span>
                    <span>posted in&nbsp;</span> 
          				  
          					    <span class="posted-in"><a href='%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0.html'>项目笔记</a></span>
          				   
                  </div>
                  <div class="more-right right">
                  <span class="comments">
                      

                       
                  </span>
                  </div>
                </div>
              </div><!-- article -->
        
              


			<div class="row">
			  <div class="large-6 columns">
			  <p class="text-left" style="padding-top:25px;">
			   
			  </p>
			  </div>
			  <div class="large-6 columns">
			<p class="text-right" style="padding-top:25px;">
			
			</p>
			  </div>
			</div>
		</div>
	</div><!-- large 8 -->

 <div class="large-4 medium-4 columns">
  <div class="hide-for-small">
    <div id="sidebar" class="sidebar">
          <div id="site-info" class="site-info">
            
                <h1>NeilBlog</h1>
                <div class="site-des"></div>
                <div class="social">











  <a target="_blank" class="rss" href="atom.xml" title="RSS">RSS</a>
                
              	 </div>
          	</div>

             

              <div id="site-categories" class="side-item ">
                <div class="side-header">
                  <h2>Categories</h2>
                </div>
                <div class="side-content">

      	<p class="cat-list">
        
            <a href="Python.html"><strong>Python</strong></a>
        
            <a href="opentstack-neutron.html"><strong>opentstack-neutron</strong></a>
        
            <a href="%E6%8A%80%E6%9C%AF%E5%91%A8%E8%BE%B9.html"><strong>技术周边</strong></a>
        
            <a href="%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0.html"><strong>项目笔记</strong></a>
         
        </p>


                </div>
              </div>

              <div id="site-categories" class="side-item">
                <div class="side-header">
                  <h2>Recent Posts</h2>
                </div>
                <div class="side-content">
                <ul class="posts-list">
	      
		      
			      <li class="post">
			        <a href="15623333744762.html">bytes/string转换</a>
			      </li>
		     
		  
		      
			      <li class="post">
			        <a href="15622929808447.html">netconf client通信框架</a>
			      </li>
		     
		  
		      
			      <li class="post">
			        <a href="15621228986145.html">devstack 安装openstack</a>
			      </li>
		     
		  
		      
			      <li class="post">
			        <a href="15620552731750.html">neutron agent 使用netconf向设备下发配置</a>
			      </li>
		     
		  
		      
			      <li class="post">
			        <a href="15620392963346.html">loggging模块</a>
			      </li>
		     
		  
		      
		  
		      
		  
		      
		  
		      
		  
		      
		   
		  		</ul>
                </div>
              </div>
        </div><!-- sidebar -->
      </div><!-- hide for small -->
</div><!-- large 4 -->

</div><!-- row -->

 <div class="page-bottom clearfix">
  <div class="row">
   <p class="copyright">Copyright &copy; 2015
Powered by <a target="_blank" href="http://www.mweb.im">MWeb</a>,&nbsp; 
Theme used <a target="_blank" href="http://github.com">GitHub CSS</a>.</p>
  </div>
</div>

        </section>
      </div>
    </div>

  
    

    <script src="asset/js/foundation.min.js"></script>
    <script>
      $(document).foundation();
      function fixSidebarHeight(){
        var w1 = $('.markdown-body').height();
          var w2 = $('#sidebar').height();
          if (w1 > w2) { $('#sidebar').height(w1); };
      }
      $(function(){
        fixSidebarHeight();
      })
      $(window).load(function(){
          fixSidebarHeight();
      });
     
    </script>

    
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script type="text/x-mathjax-config">MathJax.Hub.Config({TeX: { equationNumbers: { autoNumber: "AMS" } }});</script>


  </body>
</html>
